공부 학습

시스템 프로그래밍 1주차

Multitab 2021. 3. 3. 19:34

POSIX Document: OS가 제공해야하는 서비스 규명

  • 리눅스 시스템의 Component: Kernel => 운영체제를 관리하는도구
  • 리눅스는 Kernel mode와 User mode로 나뉜다.
  • Kernel mode는 모든 물리적 자원에 접근할수 있는 권한을 가진다.
  • System libraries는 Application들이  OS Kernel과 상호작용 할수 있는 함수들을 포함하고 있다.
  • System Utilties는 작업을 관리하는데 특화 된 유틸리티이다.
  • Linux Kernel의 역할: 프로세스 관리, 메모리/가상 메모리 관리, 파일시스템 관할, 프로세스간 통신, 네트워크
  • 리눅스 프로세스: 실행중인프로그램으로 명령문의 집합으로 이루어짐.
  • 프로세스는 각각 3가지영역을 포함하는데 Text: 프로그램 코드, Data: 프로그램에서 쓰이는 데이터, Stack: 프로그램에 사용되는 변수들 저장
  • 각 프로세스는 프로세스마다 고유한 인식숫자 PID를 가진다.
  • Process table entry와 U-area에서는 프로세스가 컨트롤되는 상태 정보와 통제권을 포함하고 있다.
  • Process table entry는 현재 Kernel에서 관리하는 프로그램을 지칭한다.
  • U-area에는 CPU가 통제하는 하나의 프로세스를 말한다.
  • 프로세스의 속성 : State[실행,중지,일시정지], PID[고유값], Register Value, User ID, Info for Kernel, I/O Info...
  • Process Management에서 중요한 모델을 말하면 Fork/Exec Process Model을 말할수 있다.
  • Fork/Exec Process Model: System Call의 일종으로 굉장히 중요하다.

2. Process

  • PID는 1으로 시작하는 정수값으로 할당되며 OS가 특정 프로세스를 불러올때 구별하는 속성값이다.
  • Credential은 각 프로세스가 제작되고 불어와진 각종 고유 정보들을 포함하는 항목이다.
  • Process Environment는 Process가 모여있는 환경 변수를 말한다. 각 환경 변수는 Name=Value의 형식을 가지며 자유롭게 Customizing 가능하다.
  • 만약 특정 환경변수를 가지는 Process을 실행하다가 Fork하여 자식프로세스를 Exec하여 자식프로세스가 만들어지면 기본적으로는 부모 프로세스의 환경변수를 물려받되, 그 후에 따로 설정가능하다.
  • 환경 변수란, 시스템차원에서 정의된 각종 변수들의 집합이다. 
  • PATH에서는 현재 디렉토리와 관계없이 무조건 한번 찾아보는 PATH변수를 말한다.

3. Process Context

  • Scheduling Context: 어떤 프로세스를 어떤 순서대로 실행해야하는지 관리해주는 스케줄러로 가장 중요한 부분이다.
  • Accounting Information: 프로세스가 사용중인 리소스를 할당하고 관리하는 부분
  • File table: 프로세스가 요구하는 파일을 읽고 쓸수 있도록 관리해주는 부분
  • signal: Software Interrupt, 소프트웨어에서 프로세스를 interrupt하라는 신호를 보내주는 부분
  • signal-handler table: signal이 들어왔을때 해야하는 동작을 정의해주는 부분
  • virtual memory Context: 메모리의 효율적인 관리를 위한 가상메모리를 관리하는 부분

4. Scheduling

  • Scheduler: CPU가 해야할일에 대해 어떤 프로세스를 얼마만큼 수행할지 결정해주는 부분
  • 각각의 프로세스가 CPU의 일정시간 만큼 처리시간을 할당해준다.
  • 프로세스 처리를 중단하거나 재개할수 있도록 하는 권한을 가진다.
  • Scheduling method에따라 효율적인 작업처리가 될지 확인 할수 있다.
  • Scheduling 방식: Time-sharing Algorithm, realtime Algorithm
  • Time-Sharing Algorithm의 경우 프로세스간에 공평한 시간을 분배하되, 언제든 중단된수있는 preemptive한 Scheduling 방식이다.(선점형 스케줄링 알고리즘)
  • 실시간으로 급한일부터 처리하는 방식으로 급한일인지 구분하기 위해 예)Credit Based Algorithm을 사용한다.  Credit으로 신용도를 쌓아나가며 우선순위
  • CPU Bound Process: CPU와 주로 연관된 프로세스[이미지처리, Vector], I/O Bound Process[입출력]: I/O와 주로 연관된 프로세스 
  • CPU Bound 프로세스가 I/O Bound Process 보다 훨신 빠르기 때문에 일부 프로세스 속도가 느린 프로세스는 영구적으로 Credit이 밀릴수 밖에 없어서  Credit Based Algorithm에서 자동적으로 우선순위를 할당하기도 한다.
  • Realtime Scheduling의 경우 실시간으로 프로세스를 처리하기 위한것으로 Hard Realtime System 과 Soft Realtime System으로 나뉜다. Hard Realtime System의 경우 관제탑이나 ABS 같은 조금의 오차가 있어도 위험한 분야에서 쓰이고 Soft Realtime System의 경우 영상 스트리밍 서비스 같이 러프한 실시간 데이터에 적용된다.

5. Memory Management

  • 물리적인 메모리를 효울적으로 사용하기 위해 고안된 방법 중 대표적으로 buddy-heap Algorithm이 있다. buddy-heap Algorithm은 전체 메모리에서 반반씩 나누어 쓰는 방식이다. 하지만 이때는 Memory Leak이 생기기 때문에 이런 부수의 문제를 해결하기 위해 시스템프로그램을 시행한다.
  • 가상메모리의 경우 일반적으로 실제 메모리 보다 2배~3배 정도를 가상메모리로 할당한다.
  • 커널은 fork()를 통해 새로운 프로세스를 생산할때와 exec()를 통해 새로운 프로그램을 실행할때 가상메모리 주소를 생성한다.
  • 가상메모리와 실제 메모리를 서로 오고가고 바꾸는 것을 Swap이라고 하며  가상->실제를 Swap-in 실제->가상을 Swap-out이라고 한다.
  • Virtual Memory에서 사용하는 알고리즘: Swapout for "Pageout-policy", Swapin  for "paging mechanism" 
  • Virtual Memory에서 저장된 데이터에 대한 Table형태로 저장되고 Swapin이 필요할때 Table을 보고 원하는 데이터의 주소를 가져오는 메카니즘

6. File System

  • File System의 종류는 다양하게 있다.
  • 리눅스의 경우 모듈마다 원하는 File System으로 Customize가 가능하다. File System과 Kernel Interface가 분리되어 있기 때문에...
  • /proc에는 OS의 시스템정보를 확인할수 있다. 
  • 리눅스에서는 모든 디바이스를 3가지 종류로 나눈다. BlockDevice, Character Device, Network Device. 리눅스에서는 모든 I/O를 파일 형태로 저장되어 다루기 편하다.
  • Data는 Page cache에 MetaData는 Buffer cache에 저장한다.
  • 실질적 데이터를 Data라고 하고 파일의 용량, 이름, 등의 정보를 MetaData라고 한다.
  • InterProcess Communication(IPC): 프로세스간의 상호작용, 한정된 32개의 Signal을 보내 A Process에서 CPU에 Signal을 보낸다. 
  • 중요한 프로세서는 Kernel mode에서 이외에서는 User mode에서 관리하는데 Kernel mode는 Signal를 받지 않고 대신 Wait queue나 Scheduling 으로 신호를 받는다.
  • Pipe는 부모 프로세스와 자식 프로세스 사이에서 서로 신호를 주고 받을수 있는 연결고리를 뜻한다. Pipe는 반드시 한방향으로 간다. 다만 양방향으로 하나씩 신호를 주고 받는 Pipe를 개서할수는 있다.
  • 공유메모리를 이용하면 한 프로세스가 변경되면 다른 파일이 변한것을 바로 알수 있다. 

7. Network Structure

  •  서로 다른 OS에서 네트워크 통신을 이용해 서로 통신해야하는데 그래서 규격화된 "네트워크 5계층"이 고안되었다.

'공부 학습' 카테고리의 다른 글

운영체제 2주차 - 1  (0) 2021.03.08
운영체제 1주차 - 3  (0) 2021.03.04
운영체제 1주차 - 2  (0) 2021.03.03
운영체제 1주차 - 1  (0) 2021.03.03
9.7 유우럽 여행 2일차 프랑스 파리 1부  (0) 2018.09.10