Skip to content

Latest commit

 

History

History
184 lines (111 loc) · 8.05 KB

200514_OS_5.md

File metadata and controls

184 lines (111 loc) · 8.05 KB

OS 정리 5

Chapter 2

System Call

System Call 활용

  • 일반적으로, 각 시스템콜마다 붙여진 번호가 있다.

    • 이 번호가 적혀진 테이블을 시스템콜 인터페이스가 유지 maintain 하고있다.
    • 시스템콜 인터페이스는 OS 커널에서 시스템 콜을 부르고, 시스템 콜의 상태와 return 값을 반환해준다.
  • 호출한 사람(유저)는 시스템콜이 어떻게 작동되는지 알 필요가 없다.

    • 그냥 API를 준수 obey 하고 시스템 콜 결과로 OS가 무엇을 해줄 것인지를 이해만 하면 된다.
    • OS 인터페이스의 세부사항 대부분은 API에 의해 프로그래머로부터 숨겨져있다.

시스템콜 인터페이스는 User Application과 Kernel 사이에서 이런식으로 호출을 돕고, 리턴값을 전달받아 반환시켜주는 등 keep back and forth한다.

C에서 printf를 할 때에도, user application(C program)은 standar C library라는 시스템콜 인터페이스에게 시스템 콜 호출을 명령하고, 해당 인터페이스는 커널모드에서 시스템콜을 수행 후 그 리턴값을 유저모드로 전달한다.

System Call Parameter Passing

  • 단순히 어떤 시스템콜을 호출하려고 하는가 identity 보다 더 많은 정보가 필요할 때도 있다
    • 필요한 정보와 타입의 양은 어떤 운영체제와 시스템 콜인지에 따라 다양하다.
  • OS에 매개 변수를 넘기는 일반적인 세 방식은 다음과 같다.
    • 가장 간단한 방법 : 매개변수를 registers 로 넘긴다
      • 한계 : 레지스터 개수보다 더 많은 매개변수를 넘겨야 할 때도 있다.
    • 파라미터를 block 또는 테이블로 메모리에 저장하고, 그 block의 address를 파라미터로서 레지스터에 저장한다.
      • Linux나 Solaris는 이 방식을 사용한다.
    • 프로그램이 파라미터를 stack으로 _push_한 뒤, OS에 의해 나중에 stack에서 _pop off_된다.
    • 블록과 스택 방식은 전달되는 매개변수의 길이나 갯수 제한이 없어서 몇몇 운영체제에서 선호된다.

예시같은것은 슬라이드를 참조할것.

이후의 슬라이드는 그냥 읽어볼것.

Operating System Structure

Layered Operating System

  • OS는 여러 개의 층으로 나누어지고, 각 층은 하위 층의 위에 만들어진다.
    • 최하위 층(0층)은 하드웨어이다.
    • 최상위 층(N층)은 유저인터페이스다
  • 모듈식으로, 레이어들은 반드시 하위 층의 function(연산들)과 서비스들만 사용하도록 선택된다.
    • 임의의 M층은 더 높은 레벨의 레이어에 의해 invoke될 수 있는 data structure와 set of routines로 이루어진다.
    • M층은 다시 하위 레벨의 레이어들의 연산을 호출할 수 있다.
  • 장점
    • 구성과 디버깅의 간단함
    • 디자인과 적용이 단순화됨
    • 각 레이어는 더 낮은 레벨의 레이어가 제공하는 연산만으로 수행됨.
    • 각 층은 이 연산이 어떻게 수행되는지에 대해 알 필요가 없다.
  • 단점
    • 여러 층을 "적절히" 정의해야만 한다.
    • 한 레이어는 더 낮은레벨의 레이어만 사용할 수 있기 때문에, 신중한 설계가 필요하다.

이후 모듈 슬라이드는 읽어볼것.

각각의 기능이 필요할때마다 모듈을 빌려서 사용하는 접근방식.

Virtual Machines

  • Virtual Machine 은 계층적 접근 방법의 논리적인 결론을 맺어준다. 가상머신은 하드웨어와 OS 커널을 마치 모두 하드웨어인 것처럼 취급한다.
  • 가상머신은 하나의 bare 하드웨어 위에서 identical 한 인터페이스를 제공한다.
  • OS host 는 프로세스가 각자 자신의 전용(가상)메모리를 갖는 전용 처리기에서 실행되는 것처럼 illusion을 만든다.
  • 각각의 guest 는 밑에 있는 컴퓨터의 (가상적인) 복사본이 제공된다.

Host OS 계층 위에 Virtualization layer가 올라와서, 각각 다른 guest OS를 형성한다.


Chapter 3 - Process

Process concept

  • OS는 수많은 프로그램을 수행한다:
    • 일괄처리 Batch 시스템 - jobs
    • 시분할 Time-shared 시스템 - user programs 또는 tasks
  • 교과서는 job 이라는 용어와 process 라는 용어를 거의 호환성있게 사용하고 있다.
  • Process - 수행중인 프로그램 ; 반드시 sequential fashion(순차적 방식) 에 의해 수행된다. 실행 파일이 메모리에 적재되었을 때 프로그램이 수행되었다고 말한다.
  • 프로세스는 다음을 포함한다.
    • Program counter(PC)
    • stack
    • data section

Memory 내부의 프로세스

  • 프로세스의 현재 활동은 다음으로 표현된다
    • program counter 값
    • 프로세스 레지스터의 내용물
  • Stack
    • 일시적인 데이터를 가지고 있다.
    • 데이터의 종류 : 함수 매개변수, 반환 주소, 지역 변수 등
  • Data section
    • 전역 변수를 가지고 있다.
  • Heap
    • 프로세스 수행시간동안 동적으로 할당되는 메모리
  • 프로그램은 수동적인 존재 entity 이다.
  • 프로세스는 능동적인 존재이다.
  • 두 프로세스들이 동일한 프로그램에 연관될 수 있다.

Process State

  • 프로세스가 수행되면, 상태가 바뀐다.
    • new : 프로세스가 생성중이다.
    • running : 명령어들이 실행되고 있다.
    • waiting : 프로세스가 어떤 이벤트(입출력 완료 또는 신호의 수신 등)가 일어나기를 기다리고 있다.
    • ready : 프로세스가 processor(CPU)에 할당되기를 기다린다.
    • terminated : 프로세스가 실행을 종료하였다.
  • 프로세스의 상태는 그 프로세스의 현재 활동에 따라서 일부 정의된다.

  • 어느 한순간에 하나의 processor에서는 단 하나의 프로세스만 수행 될 수 있다는 것을 인식하는것이 중요하다.
  • 수많은 프로세스들readywaiting 상태로 있을 수 있다.

Process Control Block (PCB)

  • 각 프로세스는 OS에서 Process Control Block (PCB) 로 표시된다.

  • 프로세스는 결국 메모리인데, 그 프로세스를 나타내는 일종의 명함(또는 포인터)의 역할이라고 볼 수 있다.

  • 특정 프로세스와 연관된 여러 정보를 수록하고있다.

    • Process state(프로세스 상태)
      • New, ready, running, waiting, terminated
    • Program Counter(프로그램 카운터)
      • 이 프로세스가 다음에 실행할 명령어의 주소
    • CPU registers(CPU 레지스터)
      • 누산기(accumulator), 인덱스 레지스터, 스택 포인터, 범용(general-purpose) 레지스터 등
    • CPU scheduling information(CPU 스케줄링 정보)
      • 프로세스 우선순위, 스케줄링 큐의 포인터들 등
    • Memory-management information(메모리 관리 정보)
      • 기준(base) 레지스터와 한계 레지스터의 값, 페이지 테이블 또는 세그먼트테이블 등
    • Accounting inforamtion(회계 정보)
      • CPU가 사용된 양과 사용된 실제 시간, 시간제한, 계정번호, 잡 또는 프로세스 번호등을 포함한다.
    • I/O status information(입출력 상태 정보)
  • 실제로 스케줄링 큐에 들어갔다 나왔다 하는것은 프로세스 그 자체가 아니라 프로세스의 명함인 PCB이다.

P0 에서 P1 로 갔다가 다시 P0 로 가는 과정. 이런 방식으로 모든 프로세스가 terminated 될 때 까지 수행한다.