해당 문서는 운영체제의 역할과 구조, 컴퓨터의 요소를 다룹니다.
운영체제(OS, Operating System)
: 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하여 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다.- cf.
펌웨어(firmware)
: 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없다.
- cf.
- CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 변환을 관리한다.
- 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다.
- 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리한다.
- I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다.
- 의미: 사용자가 전자장치와 상호 작용할 수 있도록 도움을 주는 시스템이다.
- 참고 사항: 인터페이스에서 GUI가 없고 CUI만 있는 리눅스 서버도 존재한다.
- 의미: 운영체제가 커널에 접근하기 위한 인터페이스이다.
- 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용한다.
- 사용 맥락
- I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수를 발동한다.
- 유저 모드에서 커널 모드로 들어가 파일을 읽는다.
- 다시 유저 모드로 돌아가 그 뒤에 있는 유저 프로그램 로직을 수행한다.
- 위와 같은 과정을 통해 컴퓨터 자원에 대한 직접 접근 차단할 수 있고, 프로그램을 다른 프로그램으로부터 보호할 수 있다.
- 장점: 시스템콜은 하나의 추상화 계층이기에 네트워크 통신이나 데이터베이스와 같은 낮은 단계의 영역 처리에 대한 부분을 많이 신경 쓰지 않고 프로그램을 구현할 수 있다.
- 의미: 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
- 커널의 역할
- 자원 관리
- 보안
- 추상화
- 의미: 하드웨어를 제어하기 위한 소프트웨어로 하드웨어와 커널 사이에서 명령어나 데이터를 전달해주는 역할
- 드라이버는 장치에 의존적이기에 각각의 장치마다 장치 드라이버가 존재한다.
- 배경: 커널에서 중요한 자원을 관리하기에 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눈다.
- 구분 방법: 시스템콜이 작동될 때 modebit를 참고해서 유저 모드와 커널 모드를 구분한다.
- modebit: 1 또는 0의 값을 가지는 플래그 변수
- 유저모드 (modebit = 1)
- 의미: 유저가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드
- 유저는 여기서 코드를 작성하고, 프로세스를 실행하는 등의 행동할 수 있다.
- ‘유저 애플리케이션 코드가 유저모드에서 실행된다.’라고 표현할 수 있다.
- 커널모드 (modebit = 0)
- 의미: 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있다.
- 유저모드와 커널모드의 전환
- 배경: 프로세스가 실행되는 동안에 프로세스는 수없이 유저모드와 커널모드를 왔다갔다 하면서 실행된다.
- 요청(유저모드 → 커널모드): 프로세스가 유저모드에서 실행되다가 특별한 요청이 필요할 때 system call을 이용해서 커널에 요청한다.
- 반환(커널모드 → 유저모드): system call의 요청을 받은 커널이 그 요청에 대한 일을 하고 결과값을 system call의 리턴 값으로 반환한다.
- 예시 상황
- I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수를 발동한다.
- 유저 모드에서 커널 모드로 들어가 파일을 읽는다.
- 다시 유저 모드로 돌아가 그 뒤에 있는 유저 프로그램 로직을 수행한다.
- 위와 같은 과정을 통해 컴퓨터 자원에 대한 직접 접근 차단할 수 있고, 프로그램을 다른 프로그램으로부터 보호할 수 있다.
- 컴퓨터를 이루는 네 가지 핵심 부품
- 중앙처리장치(CPU)
- 주기억장치(메모리)
- 보조기억장치
- 입출력장치
- 의미: 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 가장 핵심적인 컴퓨터의 제어 장치
- 관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 이를 CPU가 처리한다.
- 구성: 제어장치, 레지스터, 산술논리연산장치
- 제어장치(CU, Control Unit)
- 의미: 프로세스 조작을 지시하는 CPU의 한 부품
- 역할: 입출력장치 간 통신을 제어하고, 명령어들을 읽고 해석하여 데이터 처리를 위한 순서를 결정한다.
- 레지스터(register)
- 의미: CPU 안에 있는 매우 빠른 임시기억장치
- 특징: CPU와 직접 연결되어 있어 연산 속도가 메모리보다 수십 배에서 수백 배까지 빠르다.
- 배경: CPU는 자체적으로 데이터를 저장할 방법이 없기에 레지스터를 거쳐 데이터 전달한다.
- 산술논리연산장치(ALU, Arithmetic Logic Unit)
- 의미: 산술 연산과 논리 연산을 계산하는 디지털 회로
- CPU의 동작 과정
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램 읽어온다.
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장한다.
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
- 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
- 인터럽트: CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
- 하드웨어 인터럽트: 키보드, 마우스 등 IO 디바이스로 인한 인터럽트이다.
- 소프트웨어 인터럽트: 트랩이라고도 하며, 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동한다.
- 의미: 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치
- 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
- 메모리의 종류
- RAM(Random Access Memory): 임시 데이터 저장 공간으로서, 컴퓨터가 실행 중인 프로그램 및 작업에 필요한 데이터를 저장한다.
- 메모리라는 용어는 보통 RAM을 지칭한다.
- ROM(Read Only Memory): 읽기 전용 메모리로서, 주로 컴퓨터나 기타 디지털 장치에 필요한 고정된 데이터나 프로그램을 저장한다.
- RAM(Random Access Memory): 임시 데이터 저장 공간으로서, 컴퓨터가 실행 중인 프로그램 및 작업에 필요한 데이터를 저장한다.
- 의미: I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
- 역할: CPU에만 너무 많은 인터럽트 요청이 들어오지 않도록 CPU의 일을 부담하는 보조 역할을 한다.
- 의미: 몇 초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한하는 역할을 한다.
- 역할: 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재한다.
- 의미: 컴퓨터와 연결되어 있는 IO 디바이스들의 작은 CPU이다.
- 로컬 버퍼: 디바이스 컨트롤러 옆에 붙어 있으며, 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리이다.
- 본문 출처
- 이미지 출처
- 운영체제의 구조: https://math-coding.tistory.com/80
- 시스템콜: Operating System Concepts 10th - SILBERSCHARTZ
- https://www.techtarget.com/whatis/definition/operating-system-OS
- https://www.almabetter.com/bytes/articles/list-of-operating-system
- https://velog.io/@oen/시스템콜-CPU-Protection-Rings-사용자모드-커널모드