##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다.
운영체제란
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소포트웨어 계층
하드웨어를 직접적으로 건들이지 않더라도, 사용자가 소프트웨어를 통해 쉽게 컨트롤 할 수 있도록 중간자 역할을 해준다.
> 목적
- 하드웨어를 몰라도 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
- 프로그램 당 한 컴퓨터를 독자적으로 사용하는 환상을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행 - 자원을 효율적으로 관리
- CPU, Memory, I/O 장치 등을 효율적으로 관리
(여러 프로그램들이 한정된 자원을 잘 나눠 쓸 수 있도록 번갈아 줌)
- 실행 중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 / 메모리 공간을 적절히 분배
컴퓨터 시스템과 운영체제의 기능
크게 내부/외부로 구분할 수 있으며, 간단하게 표현한 그림은 위와 같다.
- 외부 입출력 디바이스가 입력을 하여 컴퓨터에게 input을 하면
- CPU가 계속 명령어를 읽고 명령을 수행
- 작업 결과를 디바이스에서 받아 결과를 출력
> 운영체제의 기능
부팅된다는 의미는 '운영체제가' 메모리에 올라가서 실행이 된다는 의미이다.
운영체제는 컴퓨터가 꺼지기 전까지 메모리에 올라가 실행되며, 나머지 메모리 영역은 프로그램들이 실행되며 차지하게 된다.
CPU는 매 clock마다 메모리에 있는 기계어를 읽어 실행을 하며, 작업공간은 메모리이기 때문에 직접적으로 외부 장치에 접근하지 못하고, 장치를 전담하는 I/O controller(그림에서의 동그라미)에게 요청을 하여 CPU에게 준다.
이처럼 CPU는 프로그램들에게 번갈아가며 할당이 되기때문에,
제일 중요한 것이 바로 "CPU 스케쥴링"이다.
"어떤 프로그램에게 CPU 사용권을 얼마나 줄 것이냐"를 결정하는 것이며, 명령어가 만약 '프로그램 C에게 CPU를 넘겨줘라'라는 명령어를 만나면 CPU는 C에게 할당되는 것이다.
두번째는 "메모리 관리"이다.
한정된 메모리를 어떻게 쪼개어 쓸지 결정하는 것을 의미하며,
세번째는 "디스크 스케쥴링"이다.
디스크는 CPU에 비해 100만배정도 느린 장치이다. 여러 프로그램들이 CPU를 나눠 쓰듯이, 디스크도 프로그램들이 나눠써야하기때문에 CPU와 같이 처리하는 순서를 정하는 스케쥴링이 필요하다.
자원의 효율성을 위해서 더 효율적인 방법을 찾아 처리를 한다.
위에서 i/o 장치와 CPU는 속도차이가 크다고 했는데, 이를 메꾸는 것이 인터럽트와 캐싱이다.
메모리 어딘가에 보관을 해두었다가 디스크까지 가지 않고 복제해둔 데이터를 캐싱에서 꺼내가는 방식으로 속도차이를 극복한다.
인터럽트는 '가로채기'라고 생각하면 된다.
CPU는 컨트롤러에게 일을 시키고 나서 할 수 있는 다른 일을 찾는다. 이 때, 일을 다 수행한 컨트롤러는 '파일이 다 읽혔으니까 가져가'라고 하는 인터럽트를 실행한다. CPU는 명령어 하나를 수행한 뒤에 인터럽트가 있는지 체크를 하기 때문에, 인터럽트가 들어오면 자동으로 CPU는 무슨 일을 수행하든 운영체제로 넘어간다.
프로세스의 상태
위 그림에서 녹색 동그라미는 컴퓨터에서 실행되는 프로세스를 의미한다.
CPU는 하나밖에 없기 때문에, 실행되는 하나의 프로세스를 "기계어를 실행" 중이다라고 말하며,
그 외 기다리는 프로세스들은 큐에서 줄을 세워 대기시켜놓는다.
(조금 쓰고 넘기고, 쓰고 넘기고)
외부 장치가 필요한 프로세스는 큐에서 디스크 스케쥴링에 의해 처리가 되도록 외부 장치 컨트롤러에게 쫓겨난다(?).
'System > OS' 카테고리의 다른 글
운영체제 2-1 ~ 2-2] 운영체제의 개요 (0) | 2021.09.19 |
---|---|
운영체제 1-2] 운영체제의 개요 (0) | 2021.09.12 |
메모리 매핑(mapping) - mmap()함수 (0) | 2020.05.19 |
Thread 정의와 Thread vs Proces (0) | 2020.04.29 |
Process와 Process Control Block (0) | 2020.04.22 |