운영체제란?
좁은 의미의 운영체제 = 커널
- 운영체제의 핵심 부분으로, 부팅 시 메모리에 올라가는데, 해당 메모리에 상주하는 부분을 말한다.
운영체제의 목적
운영체제의 계층구조를 보았을 때, 하드웨어, 사용자와 관련이 있을 것임을 알 수 있다.
- 자원을 효율적으로 관리(가장 중요한 역할)
- 자원의 종류 : 하드웨어, 소프트웨어(프로세스, 파일, 메세지 등)
- 사용자에게 컴퓨터를 편리하게 사용할 수 있는 환경을 제공한다
몇가지 용어
- Multitasking
- 여러 태스크가 돌아가고 있다.
- 사실 cpu는 한번에 하나의 프로세스만 돌릴 수 있음
- Multiprogramming
- 메모리 강조. 여러 프로그램이 메모리에 동시에 올라가 있음을 강조
- Time sharing
- cpu를 강조함. 시간을 분할하여 cpu를 나누어쓴다는 것을 강조
- Multiprocessor
- 하나의 컴퓨터에 cpu가 여러개 있는 것을 말함
운영체제의 예 - UNIX
- 코드의 대부분을 c언어로 작성
- 운영체제를 어셈블리어로 만들기 힘들어서 c언어로 만들었다.
- 이로 인해, 높은 이식성을 가진다. 특정 기계에 국한되는 어셈블리어로 제작한 것이 아니라, 어셈블리어와 독립된 언어인 c언어를 사용했기 때문이다. 이는 다른 컴퓨터에서 단지 c언어를 컴파일해서 운영체제로 사용하면 된다는 것이다.
- 높은 이식성
- 최소한의 커널 구조
- 커널이라 함은, 메모리에 상주하는 부분이라고 하였다.
- 다양한 버전
- Linux가 유닉스의 버전임
운영체제의 구조
CPU
- 스케줄링
메모리
- 무조건 프로세스별 1/n이 아니라, 특정 프로세스한테 메모리를 몰아주는 것이 효율적인 경우 발생.
- 그럼, 어떤 것을 메모리에서(Disk로) 쫒아내야 하는가? 가 이슈가 된다
- cpu에서 머지 않아 사용할 것은 냅두고, cpu가 오래 사용하지 않을 것의 메모리를 쫒아내는 방식
- 그럼, 미래를 예측해야한다!
- 메모리에 올라온 이후로, 사용이 많이 되었다면 -> 미래에도 사용될 가능성 높겠구나
- 메모리에 올라온 이후로, 사용이 적게 되었다면 -> 미래에도 사용될 가능성이 적겠구나
- cpu가 하나의 프로세스를 원활하게 실행시키기 위한, 특정 메모리 용량이 있다. 그것을 보장해주어야 한다.
디스크
- 파일을 어떻게 보관을 하는가
- 연속적? 조각조각?
- 헤드로 읽어들이므로, 메모리와는 특성이 다르다
- 스케줄링
- 들어온 순서대로? 헤드에 가까운 위치를 먼저?
- 헤드로 읽어들이기 때문에, 어떻게 하면 헤드의 이동을 최소화할 수 있는가? 가 메인 이슈가 된다
I/O 디바이스
- cpu, 메모리 같은 것에 비해 매우 느리다
- 컴퓨터와,
- 입출력 관리
- 인터럽트에 기반하여 동작
- cpu는 항상 자기 할 일을 하고 있다
- i/o 장치가 할 일이 있으면, cpu에게 인터럽트를 걸어서 자신이 할 일이 있다는 것을 알림
- cpu가 최대한 방해받지 않도록 하기
- 인터럽트에 기반하여 동작
소프트웨어를 관리하는 것
- 프로세스 생성, 삭제
- 자원 할당 및 반납
운영체제에 대한 태도
- 내가 운영체제가 되었다고 생각하고, 어떻게 하드웨어를 관리할지 와 같은 것들을 생각해보면 된다.
- 뇌를 통해 인간의 신체를 통제하듯이, 운영체제가 컴퓨터 하드웨어를 통제한다.(하드웨어 개별적으로는 고철덩어리에 불과)