더보기

한빛 아카데미 - 쉽게 배우는 운영체제 책 내용 정리입니다

01 운영체제 소개

  • 운영체제는 각각의 응용 프로그램이 활동할 수 있는 환경을 제공하고, 응용 프로그램이 필요로 하는 컴퓨터 자원을 나눠주며, 응용 프로그램으로부터 컴퓨터 자원을 보호하는 강력한 통치자 역할을 한다
  • 운영체제의 정의
    • 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
  • 운영체제의 역할
    • 자원관리(효율성), 자원보호(안정성), 하드웨어 인터페이스 제공(확장성), 사용자 인터페이스 제공(편리성)

02 운영체제의 역사

  • 일괄작업 시스템(천공카드, 라인프린터) → 대화형 시스템 → 시분할 시스템(반대개념 real time system) → 분산시스템 → 클라이언트/서버 시스템 → P2P → Grid Computing, Cloud, IOT

03 운영체제의 구조

  • Kernel(시스템호출, 드라이버) : 프로세스 관리, 메모리 관리, 저장장치 관리 같은 운영체제의 핵심적인 기능을 모아놓은것
  • System call : 커널이 자신을 보호하기 위해 만든 인터페이스
    • 커널은 사용자나 응용프로그램으로부터 컴퓨터 자원을 보호하기 위해 직접 접근하는 것을 차단, 따라서 자원을 이용하려면 시스템호출이라는 인터페이스를 통해 접근해야함
    • 커널이 제공하는 시스템 관련 서비스를 모아놓은것
    • 커널이 제공하는 시스템 자원의 사용과 연관된 함수
    • 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려 할때는 시스템 호출을 사용해야함
  • Driver : 커널과 하드웨어의 인터페이스를 담당
  • 커널의 구성
    • 프로세스 관리 : 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공
    • 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공
    • 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스 제공
    • 입출력 관리 : 필요한 입력과 출력 서비스를 제공
    • 프로세스간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원
  • 단일형 구조 커널(Monolithic)
    • 모든 서브시스템이 커널과 같은 메모리 공간에 적재, 실행되는 커널의 구조로 이루어져 있다
    • 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성
    • 장점
      • 모듈이 거의 분리되지 않았기 떄문에 모듈 간의 통신비용이 줄어들어 효율적인 운영이 가능
    • 단점
      • 모든 모듈이 하나로 묶여있기 때문에 버그나 오류를 처리하기 힘듬
      • 운영체제의 여러 기능이 서로 연결되어있어 상호 의존성이 높아 기능상의 작은 결함이 시스템 전체로 확산될수있음
      • 다양한 환경의 시스템에 적용하기 어렵다
      • 현대의 크고 복잡한 운영체제에 구현하기 어렵다
    • 커널내의 모든 서브시스템이 ring 0레벨에서 동작
  • 계층형 구조 커널(Layered)
    • 단일형 구조 커널이 발전된 형태
    • 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간의 통신을 통해 운영체제를 구현
    • 비슷한 기능을 모아 모듈화했기 때문에 단일현 구조보다 버그나 오류를 쉽게처리
    • 오류 발생시 해당 계층만 수정하기때문에 디버깅하기 쉬움
  • 마이크로 구조 커널(micro architecture)
    • 메모리 관리, 프로세스 관리, 장치 관리, 파일시스템, 네트워크 스택 등 각 서브시스템을 커널과 분리하여 별도의 메모리공간에 적재, 실행
    • 프로세스관리, 메모리관리, 프로세스간 통신관리 등 가장 기본적인 기능만 제공
    • 운영체제의 많은 부분이 사용자 영역에 구현, 따라서 각 프로세스마다 보호 영역을 갖게됨
      • 디바이스 드라이버 하나가 다운되더라도 다른 서브시스템은 영향을 받지 않게됨
    • 커널은 메모리 관리와 프로세스 간의 동기화 서비스를 제공, 메모리 관리자와 동기화 모듈은 프로세스간 통신 모듈로 연결되어있음
    • 각 모듈은 세분화되어 존재하고 모듈 간의 정보교환은 프로세스간 통신을 이용하여 이루어짐
    • 메모리 관리, 프로세스 관리, 장치 관리, 파일시스템, 네트워크 스택 등 각 서브시스템을 커널과 분리하여 별도의 메모리공간에 적재, 실행
    • 커널을 제외한 나머지 서브시스템은 ring 3레벨에서 동작
  • 가상머신 : 운영체제 위에 가상머신을 만들고 그 위에서 응용프로그램이 작동하게함

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

정리정리  (0) 2022.01.26
2. Chapter 3. Processes  (0) 2021.10.22
1. Chapter 1-2. Introduction & O/S Structures  (0) 2021.10.09

cpu

산술논리 연산장치ALU

제어장치(CU) - 작업지시

레지스터 - cpu내에 데이터를 임시로 보관

 

버퍼 - 일정량의 데이터를 모아 옮김으로 속도의 차이를 완화

캐시 - 메모리와 cpu간의 속도 차이를 완화히기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시장소

 

저장장치 계층구조

레지스터 - 캐시 - 메모리 - 저장장치

 

인터럽트

- cpu의 작업과 저장장치의 데이터 이동을 독립적으로 운영하여 효율을 높임

 1) cpu가 입출력 관리자에게 입출력 명령을 보냄

 2) 입출력 관리자는 명령받은 데이터를 메모리에 가져다놓거나 메모리에있는 데이터를 저장장치로 옮김

 3) 데이터 전송이 완료되면 입출력 관리자는 완료신호를 cpu에 보냄(인터럽트)

- 하던 작업을 중단하고 처리해야하는 신호(인터럽트)

 

 

프로그램 - 저장장치에 저장되어있는 정적인 상태

프로세스 - 실행을 위해 메모리에 올라온 동적인 상태

 

프로세스 제어 블록(PCB) : 프로세스를 처리하는데 필요한 다양한 정보를 가지고있음

- 프로세스 구분자(PID)

- 메모리 위치정보

- 중간값(프로그램 카운터, 레지스터 등)

 

프로세스 = 프로그램 + 프로세스 제어블록

 

프로세스 구조

- 코드영역(프로그램의 본문이 기술된곳, 프로그래머가 작성한 프로그램이 코드영역에 탑재)

- 데이터 영역(코드가 실행되면서 사용하는 변수나 파일등의 각종 데이터를 모아놓은곳)

- 스택 영역(운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은곳)

 

운영체제 작업 단위 = 프로세스

CPU 작업단위 = 스레드

 

/// 프로그램 실행 -> 운영체제가 코드와 데이터를 메모리에 가져옴 -> 프로세스 제어블록 생성 -> 작업에 필요한 메모리 영역 확보 -> 준비된 프로세스를 준비큐에 삽입 -> 프로세스가 생성된후 CPU 스케줄러는 프로세스가 해야할일을 CPU에 전달(이때 스케줄러가 CPU에 전달하는 일 하나가 스레드임)

 

스레드 : 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위

 

 

메모리 관리

Segmentation(가변분할방식)

- 프로세스 크기에 따라 메모리를 나눔

Paging(고정분할방식)

- 프로세스 크기와 상관없이 메모리를 같은크기로 나눔

 

컴파일과정

소스코드 -> (컴파일러) -> 목적코드(기계어) -> (링커(라이브러리)) -> 실행(동적라이브러리)

- 컴파일-> 목적 코드와 라이브러리 연결 -> 동적 라이브러리를 포함하여 최종 실행

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

01 운영체제의 개요  (0) 2022.09.28
2. Chapter 3. Processes  (0) 2021.10.22
1. Chapter 1-2. Introduction & O/S Structures  (0) 2021.10.09

Inflearn 운영체제 공룡책강의를 듣고 작성한 필기입니다.

 

Chapter 3. Processes

211022

process  실행중인 프로그램

작업의 단위는 process임

process가 필요한 것들 : CPUtime, memory, files, I/O devices

 

OS는 process를 관리해야함!

 

PCB(Process Control Block)를 운영체제가 관리

 

process is a program that performs a single hread of execution

modern oprating systems have extended the process concept to allow a process to have multiple threads of execution

 

A Thread is lightweight process

 

Scheduling Queues:

As processes enter the system, they are  put into a ready queue

CPU에서 처리하기위해 process들이 readyqueue에서 대기하다가 들어가서 실행됨

 

 

211026

In UNIX-like O/S

- 새로운 process는 fork() system call에 의해 생성됨

- child process는 parent process의 address space를 copy해서 사용

- Both processes continue execution at the instruction after the fork() system call.(fork 이후 parent, child process 실행)

 

- fork() system call

  : parent can continue its execution 

 

211103

Process가 동시(concurrently)에 실행됨

- data를 share할때 문제가 발생함

- 이를 해결하기위한 IPC(Inter Process Communication) - cooperating process

- IPC

  1. Shared memory

     - buffer를 shared memory로 만듬

     - shared by the producer and consumer processes

     - 메모리 영역에 접근하는걸 application programmer이 다 지정해줘야하는 단점

  2. Message passing

     - shared memory 관리를 OS가 알아서함

     - send, receive message

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

01 운영체제의 개요  (0) 2022.09.28
정리정리  (0) 2022.01.26
1. Chapter 1-2. Introduction & O/S Structures  (0) 2021.10.09

Inflearn 운영체제 공룡책강의를 듣고 작성한 필기입니다.

 

OS : Computer system을 운영하는 소프트웨어

정보 : 불확실한 것을 측정해서 수치적으로 표현한 것(정보의 최소단위 : bit)

정보의 처리 : 정보의 상태변환(부울대수 NOT, AND, OR)

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

01 운영체제의 개요  (0) 2022.09.28
정리정리  (0) 2022.01.26
2. Chapter 3. Processes  (0) 2021.10.22

+ Recent posts