티스토리 뷰

CS/OS

2. 들어가기 전에②

Sueaty 2020. 1. 8. 22:33

이 글은 본격적으로 운영체제에 대해 다루기 이전에 미리 상식적으로 알면 좋을 것 같은 내용들을 다루겠습니다. OS? Oh Yes! 서적 기반, 숙명여대 김주균 교수님 강의, OSS 등을 정리했습니다. 공부한 것을 정리하는 형식으로 작성되었으므로 오류가 있을 수 있습니다. 오류 발견시 댓글로 꼭 말씀해주세요! 시작해볼까요?

OS의 목적

운영체제는 사용자의 입장과 설계자의 입장에서 그 목적을 구분해서 설명할 수 있습니다. 우리 같은 사용자의 입장에서 운영체제는 컴퓨터를 보다 빠르고 편리하게 사용할 수 있도록 해주어야 하고, 배우기 쉽고 믿음이 가야합니다. 그리고 (앞으로 우리가 될 수도 있는) 설계자의 입장에서 운영체제는 설계, 유지, 보수가 쉽고 적응성이 좋으며 오류 없이 효율적이어야 합니다. 하지만 이 모든 조건들을 다 만족시킬 수는 없으므로 어떤 환경에서 사용되는지를 파악하고 그 목적에 따라 그 순위가 다르게 설정될 것입니다.

OS의 구성요소와 기능

운영체제를 구성하는 대표적 요소

위 그림에서 볼 수 있는 것 과 같이 운영체제의 대표적인 요소를 다음과 같이 볼 수 있습니다. 가장 위에 있는 Shell(= command interpreter)은 정보 교환이나 운영체제로의 요청 창구로 필요한 요소입니다. 나머지 4개는 모두 자원의 관리를 위해 필요한 요소들인데 그 종류와 관리 방식에 따라 '장치 관리', '파일 관리', '메모리 관리', '처리기 관리'로 분류할 수 있습니다. 분류는 위와 같이 하였지만 각자 일을 하는 것이 아니라 서로 밀접한 연관을 가지고 실행됩니다.

  • 장치 관리 : 시스템에 있는 주변장치(ex. 키보드, 모니터, 하드디스크) 제어
  • 파일 관리 : 사용자로 하여금 파일(= directory = folder) 생성, 수정, 삭제, 명명 등의 관리
  • 메모리 관리 : 주기억 장치 관리(ex. 메모리 할당, 프로그램들 간 경계 설정 등)
  • 처리기 관리 : CPU의 처리 능력을 각 작업에 효과적으로 배분

근데 OS는 어디있는것인가...

운영체제를 이루는 사용자 인터페이스와 수많은 관리 프로그램들은 크게 두 부류로 나눌 수 있습니다. Kernel(커널)과 Utility Program(유틸리티 프로그램)입니다. 앞으로도 커널이라는 단어가 계속 나올 것이니 잘 알아두는 것이 좋을 것 같습니다. 아래 그림은 커널의 개념도를 나타낸 것입니다.

(출처 : OSS) 커널 개념도

커널은 운영체제의 핵심 부분을 지칭하는데 다른 말로 Neucleus Program, Supervisor Program, 또는 Memory Resident Program이라고 부릅니다. 커널은 운영체제의 여러 기능들 중 매우 빈번하게 사용되는 부분으로 컴퓨터가 부팅되면 main memory에 적재되었다가 시스템을 종료시킬 때까지 남아있습니다. 그런데 왜 커널을 main memory에 둘까요? 직전 문장에도 언급되었지만 사용자 또는 프로그램에 의해 '빈번'하게 사용되기 때문입니다. 자주 사용되고, 빨리 실행이 되야 하는데 디스크에 있다면 매번 디스크에서 주기억 장치로 불러드리는 IO 작업을 해야하므로 시간이 너무 오래걸려 시스템의 성능이 떨어집니다. 

 

그렇게 중요하면 그냥 운영체제 전체를 다 main memory에 넣지 왜 커널과 유틸리티 프로그램으로 구별을 해 놓았을까요? Main memory의 제한적 용량때문입니다. 주기억 장치가 수용할 수 있는 용량은 정해져있는데, 대부분을 운영체제가 사용하고 있다면 사용자 프로그램에게 할당되는 메모리 공간이 너무 작겠죠? 그래서 잘 사용하지 않는 운영체제의 프로그램들은 디스크에 두는 것이고, 이 프로그램들이 바로 유틸리티 프로그램입니다. 필요할 때 디스크에서 주기억 장치로 불러 실행을 하고 완료 되면 디스크로 보내집니다.

 

사실 커널과 유틸리티 프로그램을 구분 짓는 기준은 분명하지 않습니다. 운영체제마다 설계자의 기준에 따라 달라지는데, 사실 그들이 동의하는 커널에 속할 프로그램들이 대부분 비슷해서 서로 다른 운영체제일지라도 커널에 속하는 프로그램들은 비슷합니다.

Dual Mode

프로그램들은 실행될 때 User mode 또는 Kernel mode 둘 중의 하나의 모드를 적용받게 됩니다. 이렇게 모드를 구분하는 이유는 사용자 프로그램 간 그리고 사용자와 운영체제 프로그램 간에 설정된 영역은 보호 되어야 하기 때문입니다. 시스템에 있는 여러 장치들을 사용자가 마음대로 작동 시키거나, 시스템에서 설정 되어 있는 여러 데이터를 바꾸는 행위는 매우 위험하기 때문에 모드위 분리를 하는 것입니다. 그러나 사용자 프로그램에서 디스크나 메모리에 접근해야 할 때는 어떻게 할까요? 이 때는 프로그램이 시스템 호출을 하게 되고 커널 모드에서 실행을 하다 끝나면 다시 유저모드로 돌아갑니다.

'CS > OS' 카테고리의 다른 글

6. CPU 스케줄링  (0) 2020.01.11
5. Thread(스레드)  (0) 2020.01.10
4. Process (프로세스)  (0) 2020.01.10
3. 들어가기 전에 ③  (0) 2020.01.09
1. 들어가기 전에①  (0) 2020.01.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함