Operating System
컴퓨터의 하드웨어만으로는 아무것도 동작할 수 없다. 하드웨어는 단순히 기계, 부품이다. 동작시키기 위해서는 프로그램이 있어야 한다.
즉, CPU를 작동시키는 프로그램, I/O device를 작동시키는 프로그램, memory를 동작시키는 프로그램이 있어야 하고 이러한 프로그램들을 operating system이라고 한다.
이 operating system은 유저와 컴퓨터 하드웨어 사이에 존재하는 software이다.
OS의 역할
Operating System이 뭘 하는지에 대해서는 사용하는 machine의 구조에 따라 다르지만 대략적으로 살펴보았을 때
- 유저를 위해 하는 것
- computer system을 사용하기 쉽게 만들어야 한다. (I/O device의 물리적 주소 대신에 편리한 valuable 같은 것을 사용할 수 있도록 만들어준다거나)
- 빠르게 프로그램을 실행시킬 수 있도록 만들어 주어야 한다. 리소스(CPU, memory, I/O device)들을 어떻게 operating sytem이 관리를 하는지 유저는 크게 알 필요가 없다.
- 여러 명의 유저들이 공유하는 OS (예를 들어 메인 프레임, 슈퍼컴퓨터와 같은 대형 컴퓨터이거나 혹은 미니 컴퓨터일수도 있음, 서버와 같은)machine
- 여러 유저들이 좋은 퍼포먼스를 가질 수 있도록 operating system이 관리해주어야 한다. 한정된 memory나 CPU를 효율적으로 사용할 수 있도록. (work station도 여기에 해당된다)
- battery 관리
- 임베디드 시스템
- OS의 가장 중요한 역할 중 하나는 resource를 process에게 할당하는 것이다. 컴퓨터 시스템은 한정된 크기의 main memory, 한정된 개수의 CPU를 갖는다. 반면 그 컴퓨터 시스템에는 많은 process들이 동시에 동작하고 있다.
- 그렇다면 이런 process들을 어떻게 한정된 개수의 CPU가 수행할 것인지를 OS가 결정하게 된다. OS는 이 CPU를 어떤 process에게 할당할 것인지 scheduling의 일을 수행하게 된다. memory도 마찬가지인데, memory 역시 한정된 크기의 메모리를 컴퓨터 시스템이 갖고 있다. 그 많은 process들의 코드나 data들을 이 한정된 memory 안에 어떻게 집어넣을 것인가? 하는 것도 OS의 주된 업무이다.
- OS는 control program이다. 유저 입장에서 봤을 때 유저 program 중에서 error가 발생했을 경우(ex devide by zero) OS가 어떻게 이 process를 동작시킬 것인가를 정의한다.(대부분 OS는 이러한 prococess들을 stop하도록 한다)
- 여러 개의 process들이 memory 안에 동시에 존재하게 된다. -> multi processing, multi programming
- 각각의 process들은 자기 자신이 접근할 수 있는 memory 영역이 결정되어 있다.
- 한 process가 다른 process의 memory 영역에 침범하지 않도록 OS가 관리하게 된다.
- OS는 kernel code나 kernel 데이터가 들어가 있는 부분도 권한이 없으면 접근하지 못하도록 보호하는 역할을 한다.
구성요소
- Kernel
OS에서 특히 중요한 부분 중 하나는 kernel이다.
kernel은 computer system을 시작해서 부팅하고 다운될 때 까지 항상 main memory에 존재해야 하는 부분을 말한다(OS의 일부). CPU scheduling, memory 할당 부분, virtyre memory 관리 부분 등이 kernel에 포함되어 있다.
- Interface
사용자의 명령을 computer에 전달하고 결과를 사용자에게 알려주는 역할을 한다. OS가 제공하는 대표적 interface는 GUI, CLI가 있다.
- System call
사용자나 program이 직접적으로 computer resource에 대한 접근하는 것을 막고 kernel을 보호하기 위해 만들어진 interface. printf(), write(), read()와 같이 사용자나 응용 program이 computer resource를 사용하기 위해서는 system call을 사용해야 한다.
- Driver
kernel과 hardware의 interface를 담당한다. OS가 각 hardware에 맞는 interface를 개발하는 것은 비효율적이다. driver를 통해 computer에서 hardware를 사용할 수 있게 만들어주는 것이 더 효율적일 것이다.
'운영체제' 카테고리의 다른 글
| Process(프로세스) (0) | 2022.07.15 |
|---|---|
| 컴파일(Compile) (0) | 2022.07.14 |
| 주소의 할당(Address Binding) (0) | 2022.07.08 |
| 컴퓨터의 구성 (0) | 2022.07.08 |