OS & Computer

운영체제와 컴퓨터
하드웨어와 소프트웨어(유저 프로그램)를 관리하는 일꾼인 운영체제와 CPU, 메모리 등으로 이루어진 컴퓨터의 구조에 대해 알아보자.
목차
운영체제의 역할과 구조
운영체제의 역할
운영체제의 역할은 크게 네 가지가 있다.
- CPU 스케줄링 및 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할 지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.
- 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당하고 반환할 지 관리한다.
- 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할 지 관리한다.
- I/O 장치 관리: I/O 장치인 마우스, 키보드, 모니터와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.
운영체제의 구조
운영체제는 크게 커널과 유저 프로그램으로 나뉜다. 커널은 하드웨어와 소프트웨어를 관리하는 운영체제의 핵심 부분이다. 유저 프로그램은 사용자가 직접 실행하는 프로그램으로, 커널을 통해 하드웨어와 상호작용한다. 커널은 CPU, 메모리, I/O 장치 등 하드웨어 자원을 관리하며, 유저 프로그램은 커널을 통해 하드웨어 자원에 접근한다. 커널은 시스템 콜을 통해 유저 프로그램과 상호작용하며, 유저 프로그램은 커널의 API를 사용하여 하드웨어 자원에 접근한다.
시스템 콜(System Call) 시스템 콜은 유저 프로그램이 커널에 요청을 보내는 방법이다. 유저 프로그램은 시스템 콜을 통해 커널의 기능을 사용할 수 있다. 예를 들어, 유저 프로그램이 I/O 요청으로 트랩(trap)을 발생시키면 시스템 콜을 통해 커널 모드로 전환된다. 커널은 요청을 처리한 후, 다시 유저 모드로 전환되어 유저 프로그램으로 돌아간다. 이 과정에서 커널은 CPU의 권한을 가지고 하드웨어 자원에 접근할 수 있다. 이러한 과정을 통해 다른 프로그램이 컴퓨터 자원에 대해 직접 접근하는 것을 방지하고, 커널이 하드웨어 자원을 안전하게 관리할 수 있다.
modebit modebit은 CPU가 현재 어떤 모드에서 동작하고 있는지를 나타내는 비트이다. modebit은 커널 모드와 유저 모드로 나뉜다. 커널 모드는 CPU가 하드웨어 자원에 직접 접근할 수 있는 권한을 가지고, 유저 모드는 CPU가 하드웨어 자원에 직접 접근할 수 없는 권한을 가진다. 유저 프로그램은 커널 모드로 전환되어야만 하드웨어 자원에 접근할 수 있다. 이때, modebit이 0이면 커널 모드, 1이면 유저 모드를 나타낸다.
컴퓨터의 요소
컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다.
CPU(Central Processing Unit)
CPU는 산술논리연산장치, 제어장치, 레지스터로 이루어져 있다. CPU는 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼이다. 관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 일꾼이 CPU가 이를 처리한다.
산술논리연산장치(ALU, Arithmetic Logic Unit) 산술논리연산장치는 덧셈, 뺄셈과 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱과 같은 논리 연산을 수행하는 디지털 회로이다.
제어 장치(Control Unit) 제어 장치는 CPU의 명령어를 해석하고 실행하는 역할을 한다. 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다.
레지스터(Register) 레지스터는 CPU 내부에 있는 작은 메모리 공간으로, CPU가 현재 처리하고 있는 데이터를 임시로 저장하는 역할을 한다. 레지스터는 CPU의 연산 속도를 높이기 위해 사용되며, CPU가 직접 접근할 수 있는 가장 빠른 메모리 공간이다.
CPU의 연산 처리 CPU에서 산술논리연산장치, 제어장치, 레지스터를 통해 연산하는 예시를 다음과 같다.
- 제어장치가 메모리와 레지스터에 계산할 값을 로드한다.
- 제어장치가 산술논리연산장치에 연산을 지시한다.
- 산술논리연산장치가 연산을 수행하고 결과를 레지스터에 저장한다.
- 제어장치가 레지스터에 저장된 결과를 메모리에 저장한다.
인터럽트(Interrupt) 인터럽트는 CPU가 현재 실행 중인 작업을 중단하고, 다른 작업을 수행하도록 하는 신호이다. 인터럽트는 하드웨어나 소프트웨어에서 발생할 수 있으며, CPU가 현재 작업을 중단하고 인터럽트 핸들러를 실행하도록 한다. 인터럽트 핸들러는 인터럽트가 발생한 원인을 처리하고, 처리가 끝나면 다시 원래 작업으로 돌아간다. 인터럽트는 CPU가 여러 작업을 동시에 처리할 수 있도록 하며, 시스템의 응답성을 높이는 데 중요한 역할을 한다.
하드웨어 인터럽트 하드웨어 인터럽트는 하드웨어 장치에서 발생하는 인터럽트로, 예를 들어 키보드 입력, 마우스 클릭, 디스크 I/O 등이 있다. 하드웨어 인터럽트가 발생하면 CPU는 현재 작업을 중단하고, 해당 하드웨어 장치의 요청을 처리한다.
소프트웨어 인터럽트 소프트웨어 인터럽트는 소프트웨어에서 발생하는 인터럽트로, 예를 들어 시스템 콜, 예외 처리 등이 있다. 소프트웨어 인터럽트가 발생하면 CPU는 현재 작업을 중단하고, 해당 소프트웨어의 요청을 처리한다.
DMA 컨트롤러(Direct Memory Access Controller)
DMA 컨트롤러는 CPU가 직접 메모리에 접근하지 않고, I/O 장치와 메모리 간의 데이터 전송을 관리하는 하드웨어이다. 이는 CPU의 부하를 줄이고, 시스템의 성능을 향상시키며 CPU가 다른 작업을 수행하는 동안에도 I/O 작업이 진행될 수 있도록 하여 시스템의 응답성을 높인다.
메모리(Memory)
메모리는 전자 회로에서 데이터나 상태, 명령어 등을 저장하는 장치를 말하며 보통 RAM(Random Access Memory)을 의미한다. 메모리의 크기가 크면 클 수록 더 많은 데이터를 저장할 수 있고, CPU가 더 많은 데이터를 처리할 수 있다.
타이머(Timer)
타이머는 CPU의 시간을 측정하고, 일정 시간 간격으로 인터럽트를 발생시켜 CPU가 다른 작업을 수행할 수 있도록 하는 하드웨어이다. 또한, CPU의 작업을 주기적으로 중단하고, 다른 작업을 수행할 수 있도록 하여 시스템의 응답성을 높이는 데 중요한 역할을 한다.
디바이스 컨트롤러(Device Controller)
디바이스 컨트롤러는 I/O 장치와 CPU 간의 통신을 관리하는 하드웨어이다. 디바이스 컨트롤러에는 디스크 드라이브, 네트워크 카드, 그래픽 카드 등이 있다.