운영체제
- 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램(스프트웨어) 간의 상호작용을 관리하고 제어하는 역할
- 목적 : 인터페이스를 제공해 효율적으로 응용 프로그램이 동작하도록 지원하고, 시스템 자원을 효율적으로 관리하여 응용 프로그램이 원활하게 동작할 수 있도록 한다.
- 역할
1) 자원 관리 : CPU(중앙처리장치), 메모리(Memory), 저장장치(Storage), 입출력 장치(I/O Device) 등 하드웨어의 자원을 할당하고 관리하여 여러 응용 프로그램이 동시에 실행될 수 있도록 한다.
2) 메모리 관리 : 응용 프로그램이 필요로하는 메모리 공간을 할당한다.
- 메모리의 할당과 해제, 가상 메모리 관리 등을 포함
3) 프로세스 관리 : 실행 중인 응용 프로그램인 프로세스(Process)를 관리
- 프로세스의 생성, 실행, 일시 정지, 시스템 중지 등의 작업을 제어하며, 여러 프로세스 간의 자원 공유와 협력을 관리
4) 디스크 및 파일 시스템 관리 : 파일의 생성, 삭제, 복사, 이동 등의 작업을 처리
5) 입출력 관리 : 사용자와 응용 프로그램이 키보드, 마우스, 디스플레이, 프린터 등과의 통신을 할 수 있도록 지원하며, 입출력 장치의 성능을 최적화
6) 사용자 인터페이스 : 사용자와 컴퓨터 간의 상호작용을 지원하는 사용자 인터페이스를 제공
- CLI, GUI를 통해 사용자가 컴퓨터를 조작할 수 있도록 한다.
7) 네트워킹 : 컴퓨터 네트워크를 관리하고, 네트워크 프로토콜을 지원하여 컴퓨터 간의 통신을 가능하게 한다.
- 인터넷 연결, 데이터 전송, 네트워크 보안 등을 관리
8) 오류 처리 : 프로세스의 비정상 종료, 메모리 오버플로우, 입출력 오류 등을 감지하고 처리하여 시스템의 안정성과 신뢰성을 유지한다.
9) 시스템 보안 : 시스템의 보안을 유지하기 위해 접근 제어, 사용자 인증, 암호화 등의 기능을 제공
- 종류 : 윈도우, macOS, 리눅스, 유닉스
CPU
- Central Processing Unit(중앙 처리 장치)
- 프로그램의 명령어를 해석하여 데이터를 연산/처리를 하는 부분, 혹은 그 기능을 내장한 칩을 말한다.
- 하드웨어
컴퓨터는 하드웨어와 소프트웨어를 관리하는 운영체제, CPU, 메모리 등으로 이루어짐
운영체제의 역할과 구조
운영체제의 역할
1) CPU 스케줄링과 프로세스 관리 : CPU 소유권을 프로세스에 할당, 프로세스 생생과 삭제, 자원 할당 및 반환을 관리
2) 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
3) 디스크 파일 관리 : 디스크 파일을 어떤 방법으로 보관할지 관리
4) I/O 디바이스 관리 : 마우스, 키보드와 컴퓨터 간의 데이터를 주고받는 것 관리
운영체제의 구조

-
GUI : 사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스. 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있게 한다.
-
CUI : 그래픽이 아닌 명령어로 처리하는 인터페이스
- ex) 리눅스 데스크탑이 아닌 리눅스 서버 - GUI 없고 CUI만 있음
-
드라이버 : 운영 체제와 장치의 상호 통신을 허용하는 소프트웨어 구성 요소
- 장치구동 프로그램
- 드라이버에는 운영 체제가 장치와 소통할 수 있는 방법을 뜻하는 함수가 있음
- 하드웨어를 제어하기 위한 소프트웨어
-
시스템콜
-
운영체제가 커널에 접근하기 위한 인터페이스
-
유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수 호출 시 사용
-
유저 프로그램이 I/O 요청으로 트랩을 발동하면 올바른 I/O 요청인지 확인 후, 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행
- I/O 요청 : 입출력 함수, 데이터베이스, 네트워크, 파일 접근 등에 관한 일
- 트랩 : 소프트웨어 인터럽트 - 인터럽트 : 프로세스 실행 도중 예기치 않은 상황이 발생할 때, 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다
-
예를 들어, I/O 요청인 fs.readFile() 함수 발동 시

-> 유저 모드에서 파일 읽지 x, 커널 모드로 들어가 파일을 읽고
-> 다시 유저 모드로 돌아가 -> 그 뒤의 유저 프로그램의 로직 수행
=> 이 과정을 통해, 컴퓨터 자원에 대한 직접 접근 차단, 다른 프로그램으로부터 프로그램 보호
컴퓨터의 요소

CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어짐
CPU
- 산술논리연산장치, 제어장치, 레지스터로 구성된 컴퓨터 장치
- 단순히 메모리에 존재하는 명령어를 해석해서 실행
- CPU 내 장치들
1) 제어장치
- 프로세스 조작을 지시
- 입출력장치 간 통신 제어
- 명령어들을 읽고 해석하며 데이터를 처리하는 순서를 결정
2) 레지스터
- 매우 빠른 임시기억 장치
- CPU와 직접 연결되어 있어, 연산 속도가 메모리보다 수백 배 빠름
- CPU는 자체적으로 데이터 저장 방법이 없어, 레지스터를 거쳐 데이터 전달
산술논리연산장치
- 덧셈 같은 두 숫자의 산술 연산과 논리합 같은 논리 연산을 계산하는 디지털 회로
CPU에서 제어장치, 레지스터, 산술논리연산장치를 통한 연산 처리

인터럽트
- 어떤 신호가 들어왔을 때, CPU를 잠깐 정지시키는 것
- IO(키보드, 마우스)로 인한 인터럽트, 0으로 나누기 등 산술연산 인터럽트, 프로세스 오류 등으로 발생
- 인터럽트 발생 시, 인터럽트 벡터로 가서 그 내의 인터럽트 핸들러 함수 중 하나가 실행
- 인터럽트 핸들러 함수 : 인터럽트 발생 시 이를 핸들링하기 위한 함수. 커널 내부의 IRQ로 호출
- 인터럽트 간의 우선 순위가 있고, 그것에 따라 실행
- 하드웨어, 소프트웨어로 나뉨
1) 하드웨어 인터럽트
- IO 디바이스에서 발생
- 인터럽트 라인 설계 후, 순차적 인터럽트 실행 중지, 운영체제에 시스템콜 요청, 원하는 디바이스로 향해, 디바이스의 작은 로컬 버퍼에 접근하여 일 수행
2) 소트트웨어 인터럽트
- 트랩이라고 함
- 프로세스 오류 등으로 프로세스가 시스템콜 호출 시 발동
DMA 컨트롤러
- I/O 디바이스가 메모리에 직접 접근할 수 있게 하는 하드웨어 장치
- CPU의 일을 부담하는 보조로, CPU의 부하를 막는다.
- 하나의 작업을 CPU와 DMA 컨트롤러가 동시에 하는 것을 방지
메모리
- 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치
- 보통 RAM을 말한다.
- ex) 공장에서 cpu는 일꾼, 메모리는 작업장
- 메모리가 클수록 많은 일을 동시에 할 수 있음 (많은 작업을 가져다 놓고 일할 수 있으니까)
타이머
- 특정 프로그램에 시간 제한을 다는 역할 (몇 초 안에 이 작업이 끝나야 한다)
- 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해서 존재
디바이스 컨트롤러
- 컴퓨터와 연결되어 잇는 IO 디바이스들의 작은 CPU