전 페이지에서 다루었듯이 운영체제는 자원을 관리하고 자원을 보호한다. 그리고 사용자가 응용프로그램이 컴퓨터 자원을 쉽게사용 할 수 있는 인터페이스
를 제공한다.
또 운영체제의 핵심이라고 말할수 있는 커널
이 있다고 하였다.
위 그림에서 운영체제는 크게 2가지로 나누어 지는데 인터페이스와 커널이다.
인터페이스
커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할
우선 인터페이스란 서로다른 두 시스템을 연결해주는 것을 말한다. 인터페이스의 종류를 보면 여러가지가 있는데
명령 인터프리터
명령 인터프리터를 예를 들자면 window에 터미널 , macOS bash를 들수 있겠다. 예전에 친구들과 게임을 하면서 terminal에 ipconfig
를 작성해본 기억이 있을것이다.
또 macOs에서 rm -rf
(삭제) 와 같은 명령을 실행해본적도 있을것이다.
그래픽 사용자 인터페이스
작업관리자 등이 있다.
커널
운영체제 구성요소 중 항상 메모리(RAM)에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어와 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리하는 역할
커널이 하는일
- 프로세스 관리 : 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.
- 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
- 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
- 입출력 관리 : 필요한 입력과 출력 서비스를 제공한다.
- 프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.
커널의 구성
단일형 구조 커널
초창기의 운영체제 구조였다. 커널의 핵심 기능을 구현하는 모듈들이 구분없이 하나로 구성되어있는 구조이다.
모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능하지만 , 모듈이 묶여 있어 아래와 같은 문제점들이 생겼다.
- 모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기가 어려움
- 운영체제의 여러 기능이 서로 연결되어 있어 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확산될 수 있음
- 다양한 환경의 시스템에 적용하기 어려움
마이크로 구조 커널
- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
- 커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어짐
시스템 호출
커널이 자신을 보호하기 위해 만든 인터페이스다. 커널은 사용자나 응용 프로그램으로 부터 컴퓨터 자원을 보호하기위해 자원에 직접 접근하는 것을 차단한다.
만약 직접 접근 을 하게 된다면 ? 응용 프로그램이 원하는 위치에 데이터 저장(충돌)이 있을것이고, 하나의 응용프로그램이 다른 응용프로그램이 사용중인 데이터를 삭제가 가능할것 이다.
그래서 시스템 호출은 커널이 제공
하는 시스템 자원의 사용과 연관된 함수이다. 이러한 인터페이스(규칙)이 있기 때문에 응용프로그램이 하드웨어 자원에 접근하거나 서비스를 이용할때는 시스템 호출을 사용해야된다.
❓ 그러면 커널에 시스템호출을 하지않고 접근해서 자원을 건드릴수있다면 어떻게 될까 ?
이러한 이유때문에 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로 커널에 접근하는것을 막음으로써 보호한다.
드라이버
커널과 하드웨어의 인터페이스다.
- 디바이스 드라이버라고도 불림
- 마우스, 키보드 드라이버
- 그래픽 카드 드라이버 등..

보안해야될 내용이거나 틀린내용이 있다면 지적해주시면 공부하는데 많은 도움이 될거같습니다. 지적은 항상 감사합니다
'Programming > CS' 카테고리의 다른 글
운영체제란 ? (0) | 2023.04.19 |
---|