운영체제
운영체제의 역할
1. CPU 스케줄링과 프로세스 관리
-> CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
2. 메모리 관리
-> 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
3. 디스크 파일 관리
-> 디스크 파일을 어떠한 방법으로 보관할지 관리
4. I/O 디바이스 관리
-> I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리
운영체제의 구조
시스템콜
- 운영체제가 커널에 접근하기 위한 인터페이스
- 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용
- 시스템콜은 하나의 추상화 계층
-> 이를 통해 네트워크 통신이라 데이터베이스와 같은 낮은 단계의 영역처리에 대한 부분을 많이 신경쓰지 않고 프로그램을 구현 가능한 장점
유저 프로그램이 I/O 요청으로 트랩을 발동하면 올바른 I/O 요청인지 확인 후 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행
-> 유저모드에서 파일 읽기X , 커널모드로 들어가 파일 읽기O, 이를 통해 컴퓨터 자원에 대한 직접적인 접근을 차단하고 다른 프로그램으로 부터 보호가 가능
잠깐) I/O 요청 & 드라이버
I/O요청: 입출력 함수, 데이터베이스, 네트워크 ,파일 접근 등에 관한 일
드라이버: 하드웨어를 제어하기 위한 소프트웨어
커널
- 컴퓨터에 속한 자원들에 대한 접근을 중재하는 것
- 입출력을 관리하고 소프트웨어로부터의 요청(시스템콜)을 컴퓨터에 있는 하드웨어(CPU, 메모리, 저장장치, 모니터)가 처리할 수 있도록 요청(시스템콜)을 변환하는 역할
- 유저는 쉘을 이용하여 커널을 통해 하드웨어를 사용 가능
modebit
- 시스템 콜이 작동될때 modebit을 참고해서 유저모드와 커널모드 구분
- modebit은 1 또는 0의 값을 가지는 플래그 변수
- 0은 커널모드, 1은 유저모드로 설정되어 유저모드일 경우 시스템콜을 못하게 막아서 한정된 일만 가능하게 한다.
컴퓨터의 요소
- 컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다.
CPU(Computer Processing Unit)
- 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치
- 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼
- 커널이 프로그램을 메모리에 올려 프로세스로 만들면 일꾼인 CPU가 이를 처리
제어장치(CU, Control Unit)
- 프로세스 조작을 지시하는 CPU의 한 부품
- 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석
- 데이터 처리를 위한 순서를 결정
레지스터
- CPU 안에 있는 매우 빠른 임시기억장치
- CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 수십배에서 수백배까지 빠르다
- CPU는 자체적으로 데이터를 저장할 방법이 없으므로 레지스터를 거쳐 데이터를 전달
산술논리연산장치(ALU)
- 덧셈, 뺼셈 같은 두 숫자의 산술 연산과 배타적 논리합 같은 연산을 계산하는 디지털 회로
CPU의 연산 처리
- 제어장치가 메모리에 계산할 값을 로드, 레지스터에도 로드
- 제어장치가 레지스터에 있는 값을 계산하라고 산술논리연산장치에 명령
- 제어장치가 계산된 값을 다시 '레지스터에서 메모리로'계산한 값을 저장
인터럽트
- 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것
- CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
- IO 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스의 오류 등으로 발생
- 인터럽트 발생 시 인터럽트 핸들러 함수가 모여있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행
- 인터럽트 간에는 우선순위 존재, 우선순위에 따라 실행
- 하드웨어 인터럽트, 소프트웨어 인터럽트로 나뉨
잠깐) 인터럽트 핸들러 함수
- 인터럽트가 발생했을 때 핸들링하기 위한 함수. 커널 내부의 IRQ를 통해 호출되며 request_irq()을 통해 인터럽트 핸들러 함수를 등록
하드웨어 인터럽트
- 키보드를 연결하거나 마우스를 연결하는 일 등의 IO디바이스에서 발생하는 인터럽트
소프트웨어 인터럽트
- 트랩이라고 하며, 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동
DMA 컨트롤러
- I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치를 뜻
- CPU에만 너무 많은 인터럽트 요청이 들어오기 때문에 CPU 부하를 막아준다
- CPU의 일을 부담하는 보조 일꾼과 같은 역할
- 하나의 작업을 CPU와 DMA 컨트롤러가 동시에 하는 것을 방지
메모리
- 전자회로에서 데이터 상태, 명령어 등을 기록하는 장치
- RAM(Random Access Memory)을 일컬어 메모리라 한다
- CPU는 계산을 담당한다면 메모리는 기억을 담당
타이머
- 몇초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한을 다는 역할
- 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재
디바이스 컨트롤러
- 컴퓨터와 연결되어 있는 IO 디바이스들의 작은 CPU