운영체제
컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하여 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다.
운영체제의 역할
1. CPU 스케줄링과 프로세스를 관리
CPU 소유권 할당과, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.
2. 메모리 관리
한정된 메모리를 어떤 프로세스에 얼만큼 할당할지 관리한다.
3. 디스크 파일 관리
디스크 파일을 어떠한 방법으로 보관할지 관리한다.
(파일 생성, 수정, 제거, 공유, 백업, 복구, 주기억장치와 보조기억장치간의 파일전송 등)
4. I/O 디바이스 관리
I/O 디바이스와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.
운영체제의 구조
인터페이스 (GUI, CUI)
사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스의 한 형태이다.
단순 명령어 창이 아니라 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호작용할 수 있게 해준다.
드라이버
하드웨어를 제어하기 위한 소프트웨어로 하드웨어와 커널 사이에서 명령어나 데이터를 전달해준다.
또한 드라이버는 장치에 의존적이기에 각각의 장치마다 장치 드라이버가 존재한다.
시스템콜
운영체제가 커널에 접근하기 위한 인터페이스이며
프로세스 관리(생성, 삭제 등), 파일관리, 디바이스 관리, 시간 및 날짜 관련 시스템, 프로세스 간
통신 때 커널함수를 호출하는데 이 때 사용된다.
컴퓨터할 때 시간은 보통 컴퓨터를 통해서 시간을 확인하는데 이 시간도 시스템 콜을 통해 관리가 된다.
커널
운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공한다.
보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스,I/O 요청 관리 등 운영체제의 중추적인 역할을 하고,
커널의 성능이 운영체제의 성능을 좌우한다.
커널의 역할 : 자원관리, 보안, 추상화
유저모드와 커널 모드
커널에서 중요한 자원을 관리하기에 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눈다.
구분 방법은 시스템콜이 작동될 때 modebit를 참고해서 유저모드와 커널모드를 구분한다.
modebit는 1 또는 0의 값을 가지는 플래그 변수인데 유저모드가 1 커널모드가 0이다.
유저모드
유저가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드.
사용자는 유저모드에서 코드를 작성하고, 프로세스를 실행하는 등의 행동을할 수 있다.
커널모드
모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있다.
프로세스가 실행되는 동안에 프로세스는 계속 유저모드와 커널모드를 왔다갔다 한다.
프로세스가 유저모드에서 실행되다가 특별한 요청이 필요할 때 시스템 콜을 이용해서 커널에 요청한다.
시스템 콜의 요청을 받은 커널이 그 요청에 대한 일을하고 결과값을 시스템 콜에 리턴값으로 반환한다.
ex)
open()을 통해 특정 파일을 열려고하는 경우
유저프로그램이 하드웨어에 접근하여 파일을 열면 시스템콜이 호출 되고, 트랩이 발생하여, 모드비트가 0으로 전환된 뒤
커널 모드에서 파일에 접근하여 이후 로직을 수행한 뒤, 다시 모드비트를 1로 변경하고 유저모드로 전환된다.
컴퓨터의 요소
CPU
컴퓨터 시스템을 통제하고 프로그램의 연산을 실행, 처리하는 가장 핵심적인 컴퓨터의 제어장치다.
관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스를 만들면 이를 CPU가 처리한다.
인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼이다.
인터럽트는 어떤 신호가 들어왔을 때 CPU를 잠시 정지시키는 것을 말한다.
CPU는 인터럽트가 발생되면 하던 일을 잠시 멈추고, 먼저 처리해야 할 일을 처리한 뒤 원래 동작으로 돌아온다.
크게 하드웨어 인터럽트와, 소프트웨어 인터럽트로 나누어 진다.
하드웨어 인터럽트
CPU 외부로부터 인터럽트 요구 신호에 의해 발생되는 인터럽트
ex) I/O, Power fail(전원 공급이상), Machin check(cpu 기능오류), External(오퍼레이터나 타이머에 의해 프로그램의 중단)
소프트웨어 인터럽트
흔히 트랩이라고 하고, 프로그램의 오류에 의해 생기는 인터럽트이다.
ex) 프로그램 검사 인터럽트(0으로 나누는 경우, overFlow 등등), SVC 인터럽트
인터럽트가 발생되면 인터럽트 벡터에 등록된 해당 인터럽트 발생 시 처리해야 할 인터럽트 핸들러가 실행된다.
인터럽트에는 우선순위가 있고, 우선순위에 따라 실행된다.
인터럽트 우선순위 👉 Power > Machin check > External > Porgram check > SVC
제어장치, 레지스터, 산술논리연산장치로 구성되어 있으며 하나씩 알아보자.
제어장치(Control Unit)
프로세스 조작을 지시하는 CPU의 한 부품이다.
입출력장치 간 통신을 제어하고, 명령어들을 읽고 해석하여 데이터 처리를 위한 순서를 결정한다.
레지스터(register)
CPU 안에 있는 매우 빠른 임시기억장치이다.
CPU와 직접 연결되어 있어 연산 속도가 메모리보다 수십 배에서 수백 배까지 빠르다.
CPU는 자체적으로 데이터를 전달할 방법이 없기에 레지스터를 거쳐 데이터를 전달한다.
산술논리연산장치(Arithmetic Logic Unit)
산술 연산과 논리 연산을 계산하는 디지털 회로이다.
CPU 동작과정
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
- 제어장치는 1 ~ 3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
메모리
전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치이고, 현재 실행되는 프로그램의 명령어와 데이터를 저장한다
메모리의 종류
- RAM(Random Access Memory) : 임시 데이터 저장 공간으로서, 컴퓨터가 실행 중인 프로그램 및 작업에 필요한 데이터를 저장한다.
- ROM(Read Only Memory) : 읽기 전용 메모리로서, 주로 컴퓨터나 기타 디지털 장치에 필요한 고정된 데이터나 프로그램을 저장한다.
DMA 컨트롤러
I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치다.
CPU에만 너무 많은 인터럽트 요청이 들어오지 않도록 CPU의 일을 부담하는 보조 역할을 한다.
타이머
몇 초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한하는 역할을 한다.
시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재한다.
디바이스 컨트롤러
컴퓨터와 연결되어 있는 I/O 디바이스들의 작은 CPU이다.
제어 정보를 위한 Register로 status register, control register를 가지고 있고,
data 정보를 저장하기 위한 local buffer를 가지고 있기 때문에 CPU라고도 불린다.
디바이스 컨트롤러 옆에 붙어 있으며, 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리이다.