운영체제란?
흔히 부르는 OS(Operating System) 으로, 컴퓨터 시스템의 자원을 관리하고 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다.
대표적으로 윈도우(window), 맥OS(macOS), 리눅스(Linux), 유닉스(Unix) 등이 있다.
운영체제의 4가지 목적
처리 능력(throughtput) 향상: OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상 시킨다.
반환 시간(turnaround time) 단축: OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킨다.
사용 가능도(availability) 향상: 사용 가능도는 시스템 자원을 얼마나 빨리 제공할 수 있는가를 의미한다. OS는 사용자가 컴퓨터를 사용해야 할 때 자원을 즉시 사용할 수 있게 한다.
신뢰도(reliablity) 향상: 신뢰도는 시스템이 주어진 문제를 정확하게 푸는지를 의미한다. OS는 입력 값에 대한 정확한 결과 값을 줄 수 있도록 신뢰도를 향상해야 한다.
CPU와 메모리 구조
CPU(Central Processing Unit) 는 다른 말로 프로세서(processor)라고 한다.
컴퓨터에서 프로그램을 실행하는데 필요한 연산을 처리하고 수행한다.
메모리 는 데이터를 저장하기 위한 기억장치로 휘발성 메모리인 주 기억장치와 비휘발성 메모리인 보조 기억장치가 있다. 주 기억장치는 메인 메모리를 의미하며 일반적으로 RAM을 가리킨다. 보조 기억장치는 SSD(Solid State Drive), HDD(Hard Disk Drive) 등이 해당한다.
메모리는 CPU에서 빨리 접근할 수 있도록 계층 구조로 나뉜다. 프로그램을 실행하면 OS가 디스크에 있는 프로그램을 메모리로 로드한다. 메모리에 로드한 프로그램을 프로세스라고 하며, CPU가 처리한다.
CPU는 하나의 프로세스만 처리할 수 있어서 멀티 프로세스 환경에서는 OS가 스케줄링을 통해 CPU에 프로세스를 할당한다.
레지스터(register): CPU가 사용자 요청을 처리하는데 필요한 데이터를 임시로 저장하는 기억장치로 CPU 내부에 존재하며 접근 속도가 빠르다.
캐시 메모리(cache memory): CPU와 RAM 사이의 속도 차이를 해결하기 위한 기억장치로 CPU 내부에 존재하며 접근 속도가 레지스터 다음으로 빠르다.
RAM(Random Access Memory): 컴퓨터에서 프로그램을 실행할 때 필요한 정보를 저장한다. CPU에서 접근 속도가 하드 디스크보다 빠르고, 휘발성 기억장치이다. 보통 메모리라고 할 때 RAM을 의미하는 경우가 많다.
하드 디스크(Hard disk): 사용자가 필요한 데이터와 프로그램을 지정하고, 비휘발성 기억장치이다.
커널과 시스템 콜
커널은 OS의 핵심 요소로, 자원 관리를 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등을 담당한다.
운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널 모드(Kernel mode) 와 사용자 모드(user mode) 로 모드를 나눈다. 커널모드에서는 하드웨어에 직접 접근해 메모리, CPU와 같은 자원을 사용할 수 있다. 사용자 모드에서는 커널 모드의 자원에 접근할 수 없게 제한을 둔다.
사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 한다.
시스템 콜은 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수다.
커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과 값을 반환한다.
시스템 콜을 사용해 프로세스 제어, 파일 조작, 장치 관리, 데이터의 유지 보수, 통신, 보호를 할 수 있다.
대표적인 예로는 프로세스를 생성하는 fork(), 부모 프로세스가 자식 프로세스의 수행을 기다리는 wait() 등이 있다.