열렬히.뛰기

운영체제의 작동과 역할

운영체제 > Part 1 : 운영체제란? > 공룡책 1장 : 컴퓨터 시스템 > 운영체제의 작동과 역할

운영체제의 작동

기본원리

  1. 부트스트랩 프로그램 : 커널을 찾아 메모리에 적재

  2. 커널이 돌아가기 시작하면, 서비스를 제공

  3. 시스템 프로그램에 의해 준비된 서비스 일부는 system daemon이 됨.

    리눅스에서의 첫 번째 시스템 프로그램 : systemd

  4. 부팅 완료

아무런 요청이 없다면, 운영체제는 기다린다.

  • 요청 = 인터럽트!
  • 인터럽트의 종류에는 하드웨어 인터럽트도 있지만, 소프트웨어 인터럽트도 존재한다.
  • 소프트웨어 인터럽트 = 트랩
  • 소프트웨어 인터럽트는 시스템 콜이라는 특수 연산을 실행하도록 한다.

다중 프로그래밍과 멀티태스킹

지금 실행되고 있는 프로그램 = 프로세스

운영체제는 한 프로세스를 대기시킨 뒤, 다른 프로세스를 실행한다.

  • 다중 프로그래밍의 원리가 바로 이것.
  • 이걸 확장시킨게 바로 멀티태스킹

동시에 여러 프로세스를 메모리에 유지하려면 메모리 관리방식이 필요하다.

또, 어떤 프로세스를 어떤 순서로 결정할지 보려면 cpu 스케쥴링이 필요하다.

적절한 응답 시간을 보장하려면 가상 메모리를 사용해야 한다.

전부 운영체제에서 다루는 부분이다.

이중모드와 다중모드

운영체제는 잘못된 프로그램으로 인해 타 프로그램 혹은 운영체제가 피해를 입지 않도록 해야 한다.

그래서, 운영체제는 여러가지 실행 모드를 나눠 하드웨어를 지원한다.

대표적인 방법은 운영체제를 두 가지 모드, 사용자 모드와 커널 모드로 나누는 것이다.

💡 둘은 모드 비트를 통해서 구분한다. 커널 모드(0), 사용자 모드 (1)

  1. 부팅 시 : 커널 모드에서 시작
  2. 운영체제 적재 후 : 사용자 모드로 넘어감.
  3. 트랩, 인터럽트 발생 시 (시스템 콜 호출) 커널 모드로 전환
  4. 시스템 콜 실행 이후 다시 사용자 모드로 복귀

이러한 이중모드를 통해 위험한 명령이 오직 커널모드에서만 수행될 수 있도록 해준다.

사용자 모드에서 위험한 명령이 실행되려고 하면, 트랩이 걸린다.

일부 운영체제는 두 가지 이상의 모드를 가진다.

  • ex. 인텔 프로세서의 보호 링
  • ex. 가상화를 위한 모드

타이머

특정한 경우, 자원이 무한대로 소모될 수 있다. (ex. 무한 while 루프)

이를 막아주는 역할을 운영체제가 해줘야 하는데, 이를 타이머를 통해 한다.

타이머는 지정된 시간 후 컴퓨터를 인터럽트 할 수 있게 설정할 수 있다.

주로 고정률의 클록과 계수기로 구현한다.

역할 1 : 자원 관리

여기서 말하는 자원은 다음과 같다.

  • CPU, 메모리, 파일, 저장공간, 캐시, 입출력

역할 2 : 보안관리

만약, 컴퓨터 시스템이 다수의 사용자를 가지며 다수 프로세스의 병행 수행을 허락한다면

반드시 데이터에 대한 접근을 규제해야 한다.

보호를 위해 운영체제는 사용자 식별자 (user ID)의 리스트를 유지한다.

이 식별자는 사용자마다 할당되고 유일하다.

또, 사용자들의 집합을 구분해야 할 경우도 생긴다.

이걸 보고 그룹이라고 하며, 그룹 이름과 그 그룹에 속한 사용자들을 정의할 필요가 있다.

운영체제는 그룹 이름과 그룹 식별자로 이를 실현한다.

사용자는 때때로 원하는 작업을 수행하기 위해 권한을 올리고 싶어 한다.

운영체제는 권한 상승을 허용하는 다양한 방법을 제공한다.

ex. 유닉스의 setuid 속성을 이용해 접근할 파일의 소유주 식별자를 이용해 동작.

프로세스는 종료되거나 특권을 해제하기 전까지 유효 사용자 식별자로 수행

역할 3 : 가상화

우선 가상화의 정의를 보자.

💡 가상화 : 단일 컴퓨터의 하드웨어를 여러 가지 실행환경으로 추상화하여 개별 환경이 자신만의 컴퓨터에서 실행되고 있다는 환상을 만들 수 있는 기술

맥 위에 vmware를 통해 가상 윈도우 3개가 올라가져 있다고 치자.

mermaid
graph TD
  process1 --> windows1 --> vm1
  process2 --> windows2 --> vm2
  process3 --> windows3 --> vm3
	vm1 --> vm_manager
	vm2 --> vm_manager
	vm3 --> vm_manager
	vm_manager --> hardware

이때의 맥을 우리는 host라고 하고, 윈도우를 guest라고 한다.

각각의 vm을 우리는 가상머신 관리자, VMM이라고 한다.

역할 4 : 분산 시스템

서로 떨어진 컴퓨터를 엮는 시스템을 분산 시스템이라고 한다.

분산 시스템의 컴퓨터들은 네트워크로 연결되어 있다.

운영체제의 입장에서 네트워크 프로토콜은 인터페이스 장치, 장치 드라이버,

그리고 데이터를 처리하는 소프트웨어가 있어야 한다.

부록 : 자료구조

운영체제를 알기 위해 필요한 자료구조는 다음과 같다.

모르는 파트는 자료구조 파트를 참고하면 될 것 같다.

  1. 리스트, 스택, 큐
  2. 트리
  3. 해시함수
  4. 비트맵 = 0과 1로 된 문자열

다양한 컴퓨팅 환경

운영체제가 어떻게 사용되는지 한번 보자.

  1. 전통적인 컴퓨팅
  2. 모바일 컴퓨팅
  3. 클라이언트 서버 컴퓨팅
    • 현대 네트워크 구조 = 서버 시스템이 클라이언트의 요청을 만족시키는 배치
    • 이를 클라이언트-서버 구조라고 한다.
    • 서버 시스템은 크게 계산 서버와 파일 서버로 나눌 수 있다.
    • 계산 서버 : 클라이언트가 계산 작업을 요청할 수 있는 인터페이스 제공
    • 파일 서버 : 클라이언트가 파일을 다룰 수 있는 인터페이스 제공
  4. p2p
    • 클라이언트-서버와 달리 클라이언트, 서버의 구분이 없음
    • 서비스가 네트워크에 분산된 여러 노드에 의해 제공될 수 있음.
  5. 클라우드 컴퓨팅
  6. 임베디드 컴퓨팅
    • 엄격한 시간 제약이 있기 때문에 실시간 운영체제를 수행.
    • 정해진 시간 제약 내에 올바른 결과를 돌려줄 수 있을 때에만 정확히 동작