[넓고 얕게 배우는 컴퓨터 구조] 운영체제가 하는 일
강의 영상📼
정리📝
- 운영체제(OS)
- 접근 및 입출력 제어, 동기화, 전산 자원(CPU, RAM 등) 관리를 비롯한 많은 일 수행
- 프로세스 관리
- 프로세스, 스레드
- 각자의 업무 흐름은 프로세스의 전용 공간(=집) 내부로 제한됨
- 화장실, 거실 등의 공간 구성 요소들은 집에 부여됨
- 같은 가족이라도 구성원들은 각자 할 일을 함: 누구는 화장실 갈 수도, 누구는 티비 볼 수도 있음
- 개인들은 그 공간들을 서로 공유함
- CPU가 컴퓨터의 정체성을 결정함
- 하드웨어 기반으로 운영체제라는 소프트웨어 존재하고 그 모든 것을 기반으로 어플리케이션 프로세스 존재 -> 프로세스 내에는 스레드 존재 -> 스레드의 흐름은 프로세스 내에서 개별적이며 프로세스에 할당된 자원을 항상 공유해서 씀(동시성) -> 동기화가 중요함
- 스레드 = 개별화된 흐름
- 프로그램의 흐름 = 스레드 단위로 존재함
-
프로세스 = 태스크
- 태스크가 여러 개 있으면 멀티 태스킹
-
동시에 태스킹 진행되므로 동기화 중요
- A가 접근하고 있는 자원에 B가 접근하면 충돌 일어나므로 충돌 발생하지 않게 동기화 필요 -> OS가 관리
-
OS가 하는 일
- 스레드가 연산할 때 어떤 스레드가 어떤 CPU에서 연산될 지 결정
- CPU를 스레드에 분배해서 연산 일어나게 함
- 연산의 흐름이 작동할 때는 CPU 자원 써야 함 -> 누구는 대기하고 누구는 연산하고…를 OS가 스케줄링함
- 프로세스가 사용하는 메모리를 할당 및 회수하는 일 또한 OS가 함
- 스레드가 연산할 때 어떤 스레드가 어떤 CPU에서 연산될 지 결정
- 프로세스마다 메모리 공간 부여됨
- 스레드는 개별적 -> 스레드가 가족(프로세스)를 이룸
- 침실은 각 개인(스레드)가 개별적으로 씀 = 스택
- 메모리 공간 관리될 때 스택 형식으로 관리되어서 스택으로 부름
- 어떤 스레드 마다 스택이라는 공간을 둬서 각자의 스레드가 연산할 때 사용
- 거실, 주방, 화장실 등은 개인에게 부여되지 않음 -> 공유
- 힙과 실행코드 영역
- 큰 공간(=집)을 가상 메모리 공간이라고 함
- 이 공간을 일정 크기로 잘라서 나눠서 사용
- 스택 영역은 보통 1메가바이트
- 거실과 같은 영역은 1.7기가바이트 정도
- 가상 메모리
- 운영체제는 페이지 단위로 메모리를 관리함
- Paged / Non-Paged
- RAM과 하드디스크를 하나의 논리적 메모리로 추상화
- 인터넷과 워드를 동시 실행 -> 페이지 단위로 운영체제가 메모리를 부여 -> 워드를 최소화 하고 인터넷 열었더니 메모리 공간이 꽉 참 -> 워드는 실제로 연산을 하고 있지 않으므로 운영체제가 워드가 쓰던 메모리를 하드디스크로 페이지 아웃(스왑 아웃) 시킴 -> 인터넷 쓰다가 닫고 워드를 재실행하면 바깥으로 빼둔 페이지를 RAM으로 페이지 인(스왑 인) 시킴
- 마치 여러 사람이 노트북 하나를 돌아가며 쓰듯 정해진 메모리 공간을 분할해서 공유하는 기법이 가상 메모리
- 관리 단위: 페이지
- 주기억장치 모자라면 하드디스크로 뺌
- 각자는 주기억장치의 어딘가에 있다고 착각하지만 RAM에 있을 수도, HDD에 있을 수도 있음
- 속도가 떨어져도 여러 프로세스가 동시에 작동될 수 있음