본문 바로가기

CS(ComputerScience)/OSTEP

운영체제 개요

728x90

운영체제 개요


📌 배운 것

프로그램이 하는 일

반입(fetch) - 해석(decode) - 실행(execute)

 

OS(Operating System)

= 소프트웨어 = 가상머신(Virtual Machine) = 자원 관리자(Resource Manager)

  • 프로그램을 쉽게 실행하기 위해(easy to use), 시스템을 사용하기 편리하기 만들기 때문에 추상화를 해줌!
  • 추상화를 통해 큰 프로그램을 이해하기 쉬운 작은 부분들로 나누어 구현 가능.
  • 프로그램 간의 메모리 공유를 가능케 하기 위해
  • 프로세서, 메모리 또는 디스크와 같은 물리적 자원을 사용하기 편리한 가상 형태의 자원으로 가상화(프로그램 실행, 메모리 할당, 파일 접근)
  • 많은 프로그램이 CPU를 공유해 동시에 실행될 수 있도록 함.
  • 프로그램들이 디스크 등의 장치를 공유할 수 있도록 함(가상 메모리)

 

운영체제 ---- API(인터페이스) ---→ 사용자

운영체제는 시스템 콜을 제공.

표준 라이브러리를 제공한다고 표현하기도 한다.

인터페이스는 프로그램을 실행, 멈춤, 어떤 프로그램을 실행시킬 것인가(policy) 등을 운영체제에 전달!

 

CPU 가상화

프로그램은 계속 실행된다.

많은 프로그램이 CPU를 공유하므로써 매우 많은 수의 가상 CPU가 존재하는 듯한 환상을 줌.

 

메모리 가상화

물리 메모리 = 바이트의 배열

read 작업 :  address  명시해줘야 함.

write 작업 : data 명시해줘야 함.

OS  VA → PA

운영체제는 가상 주소 공간을 컴퓨터의 물리 메모리로 mapping 해준다.

프로그램 : 물리 메모리를 다른 프로그램에 공유하는 것이 아니라, 각자 자신의 메모리를 가지고 있어 다른 프로그램 주소 공간에 영향을 주지 않는다.

실제로는 물리메모리는 공유자원이고 paging 단위로 여러 프로그램이 적재되어 있다.

 

병행성(concurrency) 

프로그램이 한번에 많은 일을 하려 할때, 병행성 문제 발생!

명령어가 한번에 하나씩만 실행(명령어가 원자적(atomically)으로 실행되지 않음)

cf. 이러한 문제는 멀티 쓰레드 프로그램에서도 발생.

쓰레드란? 동일한 메모리 공간에서 함께 실행중인 여러개의 함수라고 생각할 수도 있다.

 

영속성(Persistence)

DRAM 은 휘발성(volatile) 메모리로, 전원 공급 중단 & 시스템 고장 등으로 인해 메모리의 데이터 사라질 수 있음.

이러한 문제를 해결하기 위해 장기간 보존할 정보는 하드 드라이브(HD)를 사용해 저장한다.

File System : 디스크를 관리하는 운영체제 소프트웨어

open, write, close 등의 시스템 콜은 운영체제에서 파일 시스템으로 전달된다.

그러면, file system에서는 다음과 같은 일을 수행한다.

- 새 데이터가 디스크의 어디에 저장될 것인지 결정

- 자료 구조(리스트, B-tree)를 통해 데이터의 상태를 추적

- 기존 자료 구조를 읽거나 갱신

파일 시스템은 성능 향상을 위해 쓰기 요청을 지연해 취합된 요청들을 한번에 처리한다.

또한 저널링(journaling), 쓰기-시-복사(Copy-On-Write) 와 같은 복잡한 쓰기 기법을 사용해 쓰기 순서를 보장해 고장나더라고 복구 가능하도록 함.

 

즉, OS란?

CPU, 메모리, 디스크 등의 물리 자원을 가상화

병행성과 관련된 복잡한 문제 처리

파일을 영속적으로 저장해 아주 오랜 시간 안전한 상태에 있게 함.

 

OS 설계 목표

  • 성능개선을 위해 오버헤드를 줄인다.(시간 공간 절충)
  • 보호, 동시에 실행되므로 다른 프로그램에 영향을 줄 수 있다. 따라서 고립(isolation) 원칙을 따름.
  • 신뢰, 운영체제가 실패하면 응용 프로그램도 실패한다. 이러한 종속성으로 인해 신뢰가 중요!
  • 에너지 효율성
  • 보안
  • 이동성

📌 회고

cs 공부를 안한지 한달 넘었다..

한 챕터씩 매주 읽는 스터디를 만들었다.

앞으로 운영체제에 대해 공부해야 겠다!

일단 내가 이해하기 편한 책으로 공부를 할 계획이다.

 

📌 개선 방향

B-tree 자료구조에 대해서는 알지 못해 이부분은 자료구조 공부하는 시간에 따로 공부할 계획이다.

 

📌 참고 문서

운영체제 : 아주 쉬운 세 가지 이야기

'CS(ComputerScience) > OSTEP' 카테고리의 다른 글

스케줄링: 멀티 레벨 피드백 큐  (0) 2023.08.22
스케줄링: 개요  (0) 2023.08.22
제한적 직접 실행 원리  (0) 2023.08.08
프로세스 API  (0) 2023.07.31
가상화, 프로세스의 개념  (0) 2023.07.25