운영체제 (OS, Operating System) : 한정된 메모리나 시스템 자원을 효율적으로 분배하는 등 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스
3-1-1. 운영체제의 역할과 구조
운영체제의 역할
- CPU 스케쥴링과 프로세스 관리
- CPU 소유권을 어떤 프로세스에 할당할지 결정
- 프로세스의 생성과 삭제
- 자원 할당 및 반환
- 메모리 관리
- 한정된 메모리를 어떤 프로세스에 얼만큼 할당할지 관리
- 디스크 파일 관리
- 디스크 파일을 어떠한 방법으로 보관할지 관리
- I/O 디바이스 관리
- 마우스, 커보드 등 컴퓨터 간에 데이터 송수신 관리
운영체제의 구조
시스템콜 System Call
유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때, 즉 커널에 접근하기 위한 인터페이스
메모리에 있는 프로세스나 스레드에서 운영체제로 어떤 요청을 할 때 시스템콜이라는 인터페이스와 커널을 거쳐 운영체제 전달된다.
커널 kernel
운영체제의 핵심 부분으로서, 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공한다.
커널의 역할은
- 응용 프로그램 등이 컴퓨터의 자원에 쉽게 접근하지 못하게 하는 보안
- CPU 스케쥴링, 메모리관리, 입출력 관리, 파일시스템 관리 등의 자원관리
- 시스템콜의 제공같은 추상화
등이 있다.
💡 유저모드와 커널모드 사용자가 컴퓨터의 중요한 자원을 마음대로 접근하지 못하도록 모드를 나누어 관리한다. 유저모드에서는 사용자가 접근할 수 있는 영역이 제한적이며 컴퓨터 자원에 쉽게 접근하지 못한다 커널모드에서는 컴퓨터의 모든 자원에 접근할 수 있다.
프로세스는 실행되는 동안 유저모드와 커널모드를 전환하며 일을 수행한다. 프로세스가 유저모드(modebit = 1)에서 실행되다가 컴퓨터의 자원이 필요할 때 system call 를 통해 커널에 요청하며, 프로세스는 커널모드(modebit=1)이 되며 커널이 system call 에 대한 일을 수행하고 다시 유저모드로 전환된다.
3-1-2 . 컴퓨터의 요소
CPU
중앙처리장치인 CPU(Central Processing Unit) 는 산술논리연산장치(ALU), 제어장치 (CU), 레지스터로 구성되어 있는 컴퓨터 장치이며, 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 부품이다.
즉, 관리자인 OS 의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 이를 CPU 가 처리한다.
제어장치
CU(Control Unit) 는 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다.
레지스터
CPU 안에 있는 매우 빠른 임시기억장치이며, CPU는 자체적으로 데이터를 저장할 방법이 없어 레지스터를 거쳐 데이터를 전달하며 CPU와 직접 연결되어 있어 연산 속도가 메모리보다 훨씬 빠르다.
산술놀리연산장치
ALU(Arithmetic Logic Unit) 는 덧셈, 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로이다.
💡 인터럽트는 키보드, 마우스 등 IO 디바이스 인터럽트, 산술 연산 인터럽트, 프로세스 오류 등 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말한다.키보드나 마우스를 연결하는 등 하드웨어 인터럽트프로세스 오류 등의 소프웨어 인터럽트 (trap)
CPU 가 작동하는 방식에 대한 참고글
DMA 컨트롤러
CPU에만 인터럽트 요청이 몰리는 CPU 부하를 막아주기 위해 I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치이다.
메모리
전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치이며 보통 RAM(Random Access Memory) 를 일컬어 주메모리라고 한다.
타이머
타이머는 몇 초 안에 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한을 다는 역할을 한다. 시간이 많이 걸리는 프로그램에 제한을 걸기 위해 작동한다.
디바이스 컨트롤러
컴퓨터와 연결되어 있는 I/O 디바이스들의 작은 CPU를 말하며, 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리인 로컬버퍼도 가지고 있다.