CS 정리/OS

운영체제의 역할, 구조

tose33 2023. 10. 26. 14:58

OS

os 란 Operating System, 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스.

한정된 메모리나 시스템 자원을 효율적으로 분배한다.

(운영체제와 유사하지만 소프트웨어를 추가로 설치할수 없는 것을 펌웨어, firmware 라고함)

 

 

운영체제의 역할

1. CPU 스케줄링과 프로세스 관리.

CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리.

 

2. 메모리 관리

한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리.

 

3. 디스크 파일 관리

디스크 파일을 어떠한 방법으로 보관할지 관리.

 

4. I/O 디바이스 관리

I/O 디바이스들인 마우스 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리.

 

 

운영체제의 구조

커널 (Kernel)

(Kernel 의미 '핵심의')

전반적인 프로세스를 뜻함.

프로세스 관리, 메모리 관리, 저장공간 관리, 연결된 장치 관리 등 컴퓨터에 속한 모든 자원을 관리하는 역할.

 

인터페이스 (Interface)

gui(graphic user interface), cli(commad line interface) 등.

사용자의 명령을 컴퓨터에 전달하고 결과를 사용자에게 알려주는 소통의 역할.

 

시스템콜

사용자나 프로그램이 직접적으로 컴퓨터 자원에 접근하는 것을 막고 커널을 보호하기 위해 만든 코드 집합.

시스템 콜 함수를 통해 커널에 접근 가능.

 

커널이라는 굉장히 중요한 여러가지 코드나 내용이 있는데, 아무나 접근할 수 있게 만들면 안된다.

따라서 운영체제는 시스템 콜을 통해서만 호출할 수 있게 디자인 되어 있다.

응용프로그램이 컴퓨터 자원을 사용하기 위해서는 시스템콜을 사용해야 한다.

 

사용자나 응용 프로그램이 컴퓨터 자원에 직접 접근할 경우 모든 과정을 직접 처리해야하고 컴퓨터 시스템 자체가 파괴될 수 있다.

시스템콜을 사용하면 요청하고 결과만 기다리면 되기 때문에 이를 방지.

 

예)

응용 프로그램이 I/O 요청으로 fs.readFile() 이라는 파일 시스템의 파일을 읽는 함수가 발동한다.

이때 유저모드에서 파일을 읽지 않고 커널모드로 들어가 파일을 읽고,

다시 유저 모드로 돌아가 응용프로그램의 로직을 수행한다.

 

modebit

시스템콜이 작동될때 modebit 를 참고해 유저, 커널 모드를 구분한다.

0이라면 커널, 1이면 유저 모드다.

예를들어 카메라 키보드 등 I/O 디바이스는 운영체제를 통해서만 작동해야 한다.

카메라를 켜는 프로그램이 유저모드에서 켜진다면 악용하기 쉽다.

유저 프로그램이 카메라를 이용하려고 할 때 시스템콜을 호출하고 modebit을 1 -> 0 으로 바꿔서 커널 모드로 변경 후 카메라 자원을 이용한다.

 

드라이버

커널과 하드웨어의 인터페이스이다.

컴퓨터 하드웨어의 종류는 다양하다.

이때 운영체제가 각 하드웨어에 맞는 인터페이스를 개발하기는 어려우므로 하드웨어 제작사에서 드라이버 소프트웨어를 만들어 배포한다.