'면접을 위한 CS 전공지식 노트' 책을 보며 공부한 내용입니다.
OS는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다.
운영체제의 역할 4가지
- CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에게 할당할지, 프로세스의 생성과 삭제, 자원할당 및 반환 관리
- 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당할지를 관리한다.
- 디스크 파일 관리: 디스크 파일을 어떤 방법으로 보관할지 관리한다.
- I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드 등과 컴퓨터 사이에서 데이터를 주고받는 것 관리
시스템 콜
- 운영체제가 커널에 접근하기 위한 인터페이스이며, 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용한다.
- 예시
- 유저 프로그램이 I/O 요청으로 trap을 발동하면, 올바른 I/O 요청인지 확인 후에 유저 모드가 시스템 콜을 통해 커널 모드로 변환되어 실행된다.
- => I/O 요청인 fs.readFile() 호출 -> 유저 모드에서 파일을 읽는게 아니라, 커널 모드에 들어가서 파일을 읽고, 다시 유저 모드로 돌아가 이후의 로직을 수행한다.
- 이를 통해 컴퓨터 자원에 대한 직접 접근을 차단하고 다른 프로그램으로부터 보호할 수 있다.
- 프로세스나 쓰레드가 OS에 요청을 할 때, 시스템 콜이라는 인터페이스와 커널을 거쳐 OS에 전달된다.
modebit: 유저 모드와 커널 모드를 구분한다. 0은 커널 모드, 1은 유저 모드이다.
컴퓨터의 요소
- CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어짐
CPU
- 산술 논리 연산 장치(ALU), 제어 장치, 레지스터로 구성됨.
- 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행한다.
- 프로그램이 메모리에 오르면 프로세스 => 프로세스가 되면 CPU가 처리한다.
- 제어 장치: 프로세스 조작을 지시한다. 입출력 장치 간 통신을 제어하고, 명령어들을 읽고, 해석하며 데이터 처리를 위한 순서를 결정한다.
- 레지스터: CPU에 있는 매우 빠른 임시 기억 장치
- CPU의 연산 처리
- 1. 제어 장치가 메모리와 레지스터에 계산할 값을 로드
- 2. 제어 장치가 레지스터에 있는 값을 계산하라고 ALU에 명령
- 3. 제어 장치가 계산된 값을 다시 레지스터에서 메모리로 저장
인터럽트
- 어떤 신호가 들어왔을 때, CPU를 잠깐 정지시키는 것
- I/O에 의한 인터럽트, 0으로 숫자를 나누는 연산에서 인터럽트, 프로세스 오류 등으로 인해 발생하는 인터럽트 등이 있다.
- 인터럽트가 발생하면, 인터럽트 핸들러 함수가 실행된다.
- 인터럽트는 우선 순위가 있고, 우선 순위에 따라 실행된다.
- 하드웨어 인터럽트: 키보드를 연결하거나, 마우스를 연결하는 일 등의 I/O 디바이스에서 발생하는 인터럽트를 말한다.
- 소프트웨어 인터럽트: 트랩(trap)이라고도 한다. 프로세스 오류 등으로 프로세스가 시스템 콜을 호출할 때 발동된다.
DMA 컨트롤러: I/O 디바이스가 메모리에 직접 접근할 수 있도록 한다. CPU의 부하를 막아주고, CPU의 일을 보조한다. 또한, DMA 컨트롤러와 CPU가 하나의 작업을 동시에 하지 않도록 해준다.
메모리: RAM이라고 생각하면 된다.
타이머: 특정 프로그램에 시간 제한을 달아두는 것이다.
디바이스 컨트롤러: I/O 디바이스들의 작은 CPU이다. 옆에 붙어 있는 로컬 버퍼는 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리이다.
728x90
'CS' 카테고리의 다른 글
3.3 프로세스와 쓰레드 (1) | 2024.09.17 |
---|---|
3.2 메모리 (4) | 2024.09.15 |
2.5 HTTP (1) | 2024.09.07 |
2.4 IP 주소 (0) | 2024.09.06 |
2.3 네트워크 기기 (0) | 2024.09.06 |