운영체제(1)_역할과 구조

on Melody “HENNESSY”·2022년 12월 22일
1

운영체제

목록 보기
1/1
post-thumbnail

1. 운영체제의 역할

  • 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
  • CPU 스케쥴링과 프로세스 관리: CPU소유권을 어느 프로세스에 할당할지, 프로세스 생성, 삭제, 자원 할당 및 반환 관리
  • 디스크 파일 관리: 디스크 파일을 어떤 방법으로 보관할지 관리
  • I/O 디바이스 관리: I/O디바이스 간에 데이터를 주고받는 것을 관리

2. 운영체제의 구조

운영체제의 구조는 이러한 형태로 볼 수 있다.
이 구성요소들에 대해서 알아보자.

1. GUI와 CUI

  • GUI: 사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스 형태
    ex) 아이콘을 마우스로 클릭하는 동작으로 컴퓨터와 상호작용할 수 있게 도와줌.
  • CUI: GUI와 달리 그래픽으로 컴퓨터와 상호작용하는 것이 아닌 명령어로 처리하는 인터페이스
    ex) 리눅스 서버 (CUI만 존재)

2. 시스템 콜

  • 운영체제가 커널에 접근하기 위한 인터페이스: 유저 프로그램이 운영체제의 서비스를 받기 위해 커널함수를 호출할 떄 사용
  • I/O요청으로 트랩(Trap)*이 발동하면 올바른 요청인지 확인 후 시스템 콜을 통해 커널 모드로 변환되어 함수 실행

위의 시스템콜 그림에 나와 있는 것처럼, 유저모드와 커널모드를 구분하여 얻는 이점에 대해 아래의 사례를 보자.

이제 갓 두살이 된 아이가 있다.
맨날 주방에서 뚝딱거리며 맛있는 음식을 만들어 내는 엄마의 모습을 보고
이 아이도 맛있는 요리를 스스로 만들어 먹고 싶어한다.
하지만 두살인 아이에게 칼질을 하는 일이나, 불을 쓰는 일은 매우 위험한 일이다.
하지만 요리를 하기 위해선 필수적인 일이다. 그래서 칼질을 해야하거나 불을 쓸 필요가 있을 때에는
엄마를 부른다.

여기서 유저프로그램(요리)는
"칼질"이라는 요청을 했다.
하지만 함부로 하면 안되는 행동이기 때문에
유저모드(아이)에서 커널모드(엄마)로 모드를 변환하여
"칼질"이라는 파일시스템을 거쳐
다시 유저모드(아이)에게 역할을 넘기는 것이다.

아주 단적인 예로 볼 수 있지만 이밖에도, 다른 사람이 함부로 나의 물건을 사용할 수 없도록 사물함을 자물쇠로 잠구는 일처럼
모드의 변경은 악용을 방지하는 역할도 있다.

2.1. modebit: 유저모드와 커널모드를 구분하는 flag함수(ex: boolean)

이러한 유저모드와 커널모드를 구분지어 주는 것이 "modebit"이다.
0 또는 1로 구성되어 무언가를 기억하거나, 다른 프로그램에 신호를 남기기 위한 용도로서,
쉬운 예시로 boolean을 생각해 낼 수 있다.
Trap이 발동하고 I/O요청에 이상이 없을 때에, boolean 변수를 true로 전환하여 커널모드로 진입하는 것으로 생각하면 된다.

3. 커널

  • 운영체제의 핵심
  • 시스템콜 인터페이스 제공
  • 보안, 메모리, 프로세스, 파일시스템, I/O 디바이스, I/O요청 관리 등
  • 운영체제의 중추 역할

4. 드라이버

  • 하드웨어를 제어하기 위한 소프트웨어
profile
응애 초보 개발자

2개의 댓글

comment-user-thumbnail
2022년 12월 22일

짝짝 갈수록 설명도 잘하시고 일취월장입니다

1개의 답글