운영체제는 컴퓨터의 하드웨어를 관리하고, 하드웨어와 소프트웨어, 사용자를 매개하는 프로그램입니다. 커널은 운영체재의 핵심이며, 실체입니다. 운영체제는 커널과 커널 모듈들로 구성되는데, 커널이 운영체제의 핵심이다보니 일반적으로 운영체재와 커널은 동일시되고 커널이 같다면 같은 운영체제로 취급합니다.
운영체제의 역할은 사용자 관점과 시스템관점으로 나눌 수 있습니다.
쉽게애기하면 사용자가 컴퓨터 하드웨어를 모르더라도 컴퓨터를 쉽게 만들 수 있도록 지원해주는 소프트웨어가 운영체제입니다.
사용자 인터페이스(User Interface) : 사용자 인터페이스는 명령어 단위로 처리되는 '명령어 라인 인터페이스'(CLI)와 '그래피컬 사용자 인터페이스'(GUI) 로 나누어집니다.
프로그램 실행(Program execution) : 운영체재를 통해 프로그램을 메모리에 올려서 프로세스로 만들고 실행시킬 수 있어야합니다.
입출력 연산(I/O operation) : 프로세스는 모니터나 파일을 통해 입출력을 시스템에게 요구할 수 있다.일반적으로 사용자들은 입출력장치를 제어할 수 없다
파일 시스템 조작(File System Manipulation) : 프로그램은 파일을 읽거나 쓸 수 있어야하며, 이름으로 생성, 삭제, 검색할 수 있어야한다
커널 : 운영체제의 핵심으로 운영체제가 수행하는 모든 것이 저장되어있습니다.
명령어 해석기(shell) : 사용자가 커널에 요청하는 명렁어를 해석하여 커널에 요청하고 그 결과를 출력합니다.
시스템 호출
커널이 자신을 보호하기 위해 만든 인터페이스 입니다. 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 직접 접근한느 걸 차단합니다.
자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 사용하여 접근해야합니다.
드라이버
응용 프로그램과 커널의 인터페이스가 시스템 호출이라면 커널과 하드웨어의 인터페이스는 드라이버가 담당합니다. 하드웨어 제작자가 만든 소프웨어를 디바이스 드라이버라고 부릅니다.
커널이 주로 하는 일은 메모리 관리, 프로세스 관리, 파일 시스템 관리, 입출력관리, 프로세스 통신관리 등이 있습니다.
초창기의 운영체제 구조로, 커널의 핵심 기능을 구현하는 모델을 구분 없이 하나로 구성
단일한 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층을 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식입니다.
중요치 않은 구성요소를 커널로부터 제거하고, 그들의 별도의 주소 공간에 존재하는 사용자 수준 프로그램으로 구현하였습니다.
https://parksb.github.io/article/5.html
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-1.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80
https://math-coding.tistory.com/80
https://4legs-study.tistory.com/32