나 JAVA 봐라

[운영체제] 운영체제 거시적으로 보기 본문

CS/운영체제

[운영체제] 운영체제 거시적으로 보기

cool_code 2024. 2. 7. 20:12

운영체제가 무엇인지 거시적으로 살펴보며 이해해보자.

 

운영체제의 역할

  • 컴퓨터 구조 파트에서 학습한 다양한 컴퓨터 부품(CPU, 메모리, SSD, 입출력 장치..) 들은 '누가' 움직이게 만들까? => 운영체제
    • 위에서 말한 컴퓨터 부품들은 (시스템) 리소스 라고도 한다.

* 리소스 (= 자원) : 실행에 마땅히 필요한 요소

리소스 소모/낭비 , 리소스 모니터링 등을 말할 때 사용된다. 

(ex. 프로세스 실행에 필요한 리소스를 모니터링한다.)

 

운영체제의 종류

  • 윈도우, macOS, 리눅스, 안드로이드,...

운영체제

  • 운영체제: 자원을 관리하고 할당하는 '특별한 프로그램'
    • 모든 프로그램은 실행되기 위해 메인 메모리(RAM)에 적재되어야 한다. 이 메모리에 적재된 프로그램을 CPU에서 인출해서 실행한다.
    • 운영체제는 특별하기 때문에, 적재되는 영역(= 커널 영역)이 따로 있다.
  • 역할
    • 메모리 할당, 반환
    • CPU 할당, 반환
    • 디스크 할당, 반환
    • => 이렇게 '자원' 을 관리, 할당한다.

RAM 영역
리소스 관리하는 운영체제

운영체제의 핵심부, 커널(kernel)

커널

 

대부분 운영체제에서 배우는 것들은 커널에 관한 내용이다. 

그렇다면 커널이 아닌 것은 무엇이 있을까? 

UI (-> ex. 아이콘 더블클릭 하면 어떻게 된다, 아이콘 드래그하면 이동 된다 ~)

 

개발의 편의를 제공하는 운영체제

응용 프로그램(사용자 프로그램)이 자원에 직접 접근할 수 있을까? -> X !!

문득 생각해보면, 응용 프로그램은 결국 하드웨어 위에서 동작하기 때문에 가능할 것이라고 생각할 수도 있다. 

하지만 다 운영체제를 거쳐야 한다. 

 

 

이중모드

  • 커널 모드
    • 운영체제 서비스를 제공받을 수 있는 모드 (입출력 가능)
    • 커널 영역의 코드를 실행할 수 있는 모드
  • 사용자 모드
    • 운영체제 서비스를 제공받을 수 없는 모드 (입출력 불가능)
    • 커널 영역의 코드를 실행할 수 없는 모드

이 때, 응용 프로그램이 사용자 모드에서 있다가 운영체제 서비스를 제공받기 위해 커널 모드로 전환을 할 수 있다.

이를 '시스템 콜' 이라고 한다.

 

시스템 콜

  • 시스템 콜: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 것
  • 소프트웨어 인터럽트의 일종이다.

시스템 콜

 

운영체제 핵심 서비스

  • 프로세스 관리
  • 자원 관리 접근 및 할당
    • 자원 : CPU, 메모리, 보조기억장치, 입출력장치
  • 파일 시스템 관리
    • 파일 시스템 : 파일/ 디렉토리를 관리해주는 내부의 프로그램

 

위와 같이 응용 프로그램을 실행하다가 하드웨어와 관련한 기능을 수행할 때에는 커널의 코드를 실행하게 된다. (커널 모드)

그리고 이러한 권한을 조금 더 세부적으로 나눈 '보호 링' 도 있다. 

 

보호 링

 

'CS > 운영체제' 카테고리의 다른 글

[운영체제] CPU 스케줄링  (1) 2024.02.07
[운영체제] 프로세스와 스레드  (1) 2024.02.07