같이 스터디하는 팀원이 기초 강의로 좋다고 하여!
빠르게 듣게 되었다 아래는 강의를 들으면서 메모 겸 적은 내용이다.
강의 링크: 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기
코드를 동일하게 작성해도 동작하지 않는 경우가 있다. -> 생각보다 아주 많다!
컴퓨터를 미지의 대상에서 분석의 대상으로 바라볼 수 있음
aws를 쓰더라도 이를 고려하는 걸 피할 수 없다.
컴퓨터가 이해하는 두 가지 정보: 데이터(정적인 정보), 명령어
컴퓨터는 결국 명령어를 처리하는 기계
컴퓨터의 네 가지 핵심 부품
메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다.
프로그램이 실행되려면 메모리에 저장되어 있어야 한다.
메모리에 저장된 값의 위치는 주소로 알 수 있다.
1) ALU: 계산기
2) 레지스터: CPU 내부에 있는 작은 저장장치
3) 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 장치
- 제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호 (메모리 읽기 신호, 메모리 쓰기 신호...)
다음 단계에서 220을 5번지에 저장하게 됨
입출력장치는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
(모니터, 키보드, 마우스)
메인보드 & (시스템) 버스로!
메모리 읽기
메모리 쓰기
Windows, android, Macos..
(시스템) 자원
운영체제
여기서 실행중인 프로그램이란? 프로세스
응용 프로그램: 웹브라우저, 메모장 등
🧠 누가 사용자 영역에 프로그램을 적재했을까?
-> 메모리의 운영체제죠 (자원관리 - 메모리관리)
운영체제의 크기보다 적재할 프로세스의 크기가 훨씬 크다면? 페이징과 스와핑 방식을 이용한다. (추가 심화 학습이 필요해보임)
🧠 우리는 보통 여러 프로그램을 동시에 실행한다.
-> 여러 개의 프로그램이 아주 빠르게 번갈아 가면서 실행된다.
그럼 어떤 프로세스를 먼저, 얼마나 오래 실행할까? CPU를 누구에게 먼저 할당해줄지
=> 이걸 하는게 운영체제다. 바로 운영체제의 자원(CPU) 관리
🧠 많은 프로그램들이 동시에 실행될 때, 누가 일목요연하게 실행을 관리해주지?
-> 운영체제의 프로세스 관리
-> 운영체제의 동기화 (ex. 프로그램 A보다 B가 무조건 먼저 실행되어야 해!!)
🧠 수많은 프로세스들이 자원에 마구 직접 접근해도 괜찮을까?
-> YES, 왜냐면 운영체제가 관리
-> 운영체제가 문지기 역할(시스템 호출)을 통한 자원을 보호함
운영체제는 사용자를 위한 프로그램이 아니다. 프로그램을 위한 프로그램이다.
그렇기 때문에 프로그램을 만드는 개발자는 운영체제를 알아야 한다!