운영체제 종류, 역할, 구조와 CPU
운영체제의 종류
- 운영체제는 앞단의 어떤 인터페이스를 두느냐에 따라 GUI와 CUI로 나눌 수 있다.
- GUI
- Graphical User Interface
- 그래픽을 사용하여 컴퓨터와 상호작용하는 인터페이스
- CUI
- Character User Interface
- 사용자가 키보드만을 사용하여 문자를 기반으로 컴퓨터와 상호작용하는 인터페이스
- 예전 OS인 MS-DOS가 대표적이다. (1994 단종)
운영체제의 역할
- 운영체제의 커널이 담당한다.
![](https://i0.wp.com/geonwoo.kim/wp-content/uploads/2024/03/img-10.png?w=1200&ssl=1)
- 커널(kernel) : 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램 (핵심)
- 시스템의 모든 것을 완전히 제어하며 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 서비스를 제공한다.
- 역할 : 보안, 자원관리, 추상화
- CPU 스케줄링, 프로세스 상태관리
- 메모리 관리
- 작은 메모리를 기반으로 어떤 프로세스를 실행시킬지 (스와핑)
- 디스크 파일 관리
- I/O 디바이스 관리
운영체제의 구조
- 유저프로그램
- OS
- 인터페이스(GUI 또는 CUI)
- 시스템콜
- 커널(I/O 드라이버, 파일시스템 등)
- 하드웨어
컴퓨터 시스템의 구조
- CPU : 인터럽트에 의해 메모리에 존재하는 명령어를 해석해서 실행
- DMA 컨트롤러 : CPU의 일을 보조
- 메모리 : 전자회로에서 데이터, 상태 등을 기록(작업장)
- 타이머 : 특정프로그램에 시간을 다는 역할
- 디바이스 컨트롤러 : IO디바이스들의 작은 CPU
- 로컬버퍼 : 디바이스에 달려 있는 작은 메모리
CPU
- 산술논리연산장치, 제어장치, 레지스터로 구성되어있는 장치
- 인터럽트에 의해 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼
- 메모리에 있는 일을 해석해서 실행하는 일꾼
산술논리연산장치
- ALU(arithmetic and logical unit)
- 사칙연산과 같은 산술연산과 논리연산을 하는 회로장치
제어장치
- CU(control unit)
- 프로세스의 조작을 지시
- 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정
레지스터
- CPU 안에 있는 매우 빠른 임시기억장치(메모리)
정리
- CPU의 정확한 표현 : CPU는 메모리에서 레지스터로 올라간 값을 읽는 일꾼이다.
- 플로우
- 제어장치가 메모리에 있는 일을 레지스터에 로드한다.
- 제어장치가 레지스터에 있는 값을 읽으라고 ALU에게 전달한다.
- ALU가 레지스터에 있는 값을 읽어서 계산 한 뒤 레지스터에 전달한다.
- 레지스터에서 메모리로 다시 올린다.
인터럽트
- 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것
- 0으로 숫자를 나누는 산술 연산오류, 프로세스 오류 등으로 발생한다.
- 오류뿐만 아니라 I/O 디바이스를 사용할 때의 인터럽트, 우선순위가 높은 프로세스의 발생 등으로도 발생한다.
과정
- CPU는 메모리에 있는 명령어(instruction)을 순차적으로 실행한다.
- 인터럽트가 발생하면 점프해서 인터럽트 핸들러 함수가 모여있는 인터럽트 벡터로 간다.
- 인터럽트 핸들러 함수(인터럽트 서비스 루틴 = ISR)가 실행되며 특정 명령어를 실행한다.
- 인터럽트가 종료되면 다시 순차적으로 실행되게 된다.
종류
- 하드웨어 인터럽트
- I/O 디바이스 등 하드웨어에서 발생하는 인터럽트
- 마우스를 기반으로 버튼을 클릭하거나, 디스크에서 파일을 읽거나, 쓰기 작업이 완료되었을 때 등
- 소프트웨어 인터럽트
- 트랩(trap)이라고도 한다.
- 프로세스 오류, 프로세스 종료, 시작 등을 기반으로 프로세스에서 발생하는 인터럽트
- 하드웨어 인터럽트보다 우선순위가 높은 인터럽트
시스템콜
- 운영체제가 커널에 접근하기 위한 인터페이스
- 유저프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 이를 거쳐서 호출하도록 설계되어 있다.
- 프로세스 관리(생성, 삭제 등), 파일 관리, 디바이스 관리, 시간 및 날짜 관련 시스템, 프로세스 간 통신 때 이를 통해 커널함수를 호출한다.
- ex) 프로세스를 종료하는
kill()
함수 → 시스템콜을 거쳐서 커널함수가 호출되게 된다.
과정
- 만약 유저 프로그램이 I/O 요청을 위한 트랩을 발동했다고 하면 다음과 같은 과정이 발생한다.
- 유저 프로그램이 I/O 요청 트랩발동을 한다.
- 올바른 I/O 요청인지 확인한다.
- 유저 모드가 시스템콜을 통해 커널모드로 변환한다.
- 이후 커널함수를 실행한다.
커널함수
- 커널 안에 있는 여러 개의 함수를 뜻한다. (= native function)
커널
- 운영체제의 핵심 부분이자 시스템콜을 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
유저 모드
- 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드
커널 모드
modebit
- 시스템콜이 작동될 때 modebit을 기반으로 유저 모드와 커널 모드를 구분한다.
- modebit은 1 또는 0의 값을 가지는 플래그 변수이며 1은 유저모드, 0은 커널모드를 가리킨다.
시스템콜의 장점
- 유저 프로그램은 시스템콜을 기반으로 커널과 분리가 되게 된다.
- 즉, 유저프로그램은 복잡한 파일 시스템과 프로세스 생성 등에 대한 내부동작을 신경 쓸 필요가 없다.
- 운영체제의 관리하에 프로그램이 운영되므로 시스템의 안정성과 보안이 강화된다.