운영체제 11

11. 프로세스 동기화

Cooperating process 서로 영향을 주고 받는 프로세스, 물리적인 주소 공간을 공유하거나 (스레드) 데이터를 공유하는 프로세스. 하지만 데이터 공유의 동시적인 접근은 데이터 불일치(손실)를 야기할 수 있다. 따라서 우리는 cooperating process를 실행할때 순서대로 실행되도록 보장되어야, 공유된 메모리 등이 동시에 유지될 수 있다. 여러개의 프로세스들이 integrity of data (데이터의 유지, 통일성) 의 공유하고 있을 때 Concurrent execution⇒ 그래서 다음 프로세스가 들어와서 코드를 실행하다보면 문제가 생길 수 있음 ⇒ 프로세스는 실행하던도중 어느 포인트 에서든 interrupt 될 수 도 있다 Paralle execution ⇒ 두개 이상의 instru..

운영체제 2021.09.11

10. 스케줄링 알고리즘

SJF 알고리즘 SJF 는 optimal 한 방법이지만, 다음 CPU burst 길이를 알 방법이 없다 그래서 다음 CPU burst 길이를 예측을 해보자 이론적으론 최적이지만, 실제로 사용하는 알고리즘은 아님 preemptive 할수도 있고 non-preemptive 할 수도 있다 non-preemptive : 그래도 P0이 진행중이니 끝내고나서 P1을 진행하는것 preemptive : P0의 남은 시간보다 P1의 시간이 적으니 P1을 먼저 진행하는것 ← 더 유리함 ⇒ P0 이 진행중이고 5초 남았을 떄 P1 이 1초걸리는 일이라면, next CPU burst 예측하는 방법 과거에 측정된 평균 길이로 판단할 수 있다 지수적 평균 : 과거로 평균길이로 잡는다고해서 정확한건 아니기 때문 SRTF 스케줄링 ..

운영체제 2021.09.10

09. CPU 스케줄링

멀티프로그램 OS 에서의 기본 멀티프로그래밍의 목적 각 프로세스들을 동시에 실행시키기 위해 CPU 효율을 높이기 위해 CPU bust & I/O bust CPU bust : running CPU bust 가 많은 경우 CPU bound I/O bust : waiting → ready I/O bust가 많은 경우 I/O bound ⇒ 빈도 수는 CPU-bound 보다 I/O bound 가 더 잦다 CPU scheduler 메모리에 올라간 프로세스 중에 누구를 고를것인지 정하는 것 ⇒ ready 상태의 프로세스들 중에 CPU 를 할당해줄 수 있는 프로세스를 고르는 것 다음 프로세스를 어떻게 정할지?⇒ Priority Queue : 우선순위를 정하는 방법은? ⇒ FIFO Queue (First-In First..

운영체제 2021.09.09

08. 멀티스레딩

Thread 의 타입 user thread 커널 서포트 없이 유저 모드에서 관리됨 유저 스페이스 kernel thread OS가 CPU core 를 직접 설정해서 사용 커널 스페이스 유저 스레드와 커널 스레드의 관계 커널모드 위에서 유저모드가 돌아감 Many-to-One Model One-to-One Model Many-to-Many Model 요즘 자주 사용되는 스레드 라이브러리 POSIX Pthreads Windows thread Java thread(유닉스라면 pthrad, 윈도우면 윈도우꺼 사용) Pthreads POSIX 기본 규격 (IEEE 1003,1c) Implicit Threading 방법 동시, 병렬적인 앱을 디자인하는 것은 멀티코어, 멀티스레딩을 디자인하는것과 같다 ⇒ 어렵다 그래서 ..

운영체제 2021.09.08

07. 스레드의 이해

예전에는 하나의 프로세스 에는 하나의 스레드로 실행되었다 하지만 이제는 하나의 프로세스가 여러개의 스레드를 가질 수 있다 Thread liteweight process (LWP) 라고도 함 멀티 스레드를 지원한다면, CPU 를 점유하는 가장 기본적인 단위가 스레드가 됨 ⇒ (pid 가 아니라) tid, program counter, register set, stack 도 스레드 단위 server 에서의 멀티스레딩 client → server → thread : client 에서 server 로 큰 리퀘스트를 보내고, 서버는 새 스레드를 만들어서 다음에 올 리퀘스트들을 받을 수 있다. 멀티스레딩의 장점 Responsiveness ( ) : 유저인터페이스를 처리할 때 blocking 할 일 없이 계속해서 실..

운영체제 2021.09.07

06. 프로세스간 통신의 실제

IPC 시스템의 예제 Shared Memory : POSIX Shared Memory: 운영체제의 표준화(의도대로는 안됨,,) ⇒ Potable Operating System Interface (for uniX) Message : Pipes ⇒ One of the earliest IPC mechanisms on UNIX systems POSIX shared memory /* create */ fd = shm_open(name, O_CREAT | ORDWD, 0666); /* configure the size of the object in bytes */ ftruncate(fd, 4096); // (fd, byte 사이즈) /* establish 메모리 매핑 */ mmap(0, SIZE, PROT_READ..

운영체제 2021.09.06

05. 프로세스간 통신

0 - 프로세스가 동시에 동작하는 방법 두가지 독립적 (문제없음) : 공유하는 데이터가 없는 것 cooperating process (이때 문제가 생길 수 있음) : 공유하는 데이터가 있는 것 1 - IPC : Inter-Process Communication : 프로세스끼리 데이터를 공유할 때 필요한 메커니즘 데이터를 주고 받는 것 1.1 - IPC 의 기본적인 요소 메모리를 공유하는 것 (shared memory) 메세지를 주고 받는 것 (message passing) 1.2 - Producer-Consumer Problem 예 : 컴파일러가 어셈블리 코드를 생산하고, 어셈블러가 소비하는 것 예 : 웹서버가 HTML 파일을 생산하고, 브라우저가 소비하는 것 2 - shared-memory 각 프로세스..

운영체제 2021.09.05

03. 프로세스의 이해

- 본 글은 인프런 공룡책 운영체제 강의를 듣고 정리한 내용입니다 프로세스 프로세스란 실행중인 프로그램 프로세스가 실행되려면 cpu 를 쓸수있어야 함 메모리에 올라가있어야 함 리소스들을 관리할 수 있어야함 (files, I/O device) 프로그램 사이즈 확인 방법 $ size ./a.out text data bss(initialized data) dec hex filename 순으로 출력된다 프로세스의 생명주기(Life cycle) new : 프로세스 생성 (fork 같은게 실행된) Running : 프로세스를 CPU에 로딩한 상태 Waiting : CPU 가 다른 프로세스를 실행중이라면 대기하는 상태 I/O 대기 같은 것 (queue) Ready : waiting 에서 준비가 되었다는걸 알리는 상태..

운영체제 2021.09.03

02. 운영체제의 개념과 구조

- 본 글은 인프런 공룡책 운영체제 강의를 듣고 정리한 내용입니다 0. Operating system 컴퓨터의 하드웨어를 관리해주는 소프트웨어 어플리케이션 프로그램, 하드웨어와 유저간의 연결을 해주는 역할 가장 핵심적인 것은 Kernel 1. 0 - Classical computer system 책에선 modern 이라 나옴 CPU, bus 로 연결된 여러개의 device controllers 로 구성되어 있다 1. 1 - Bootstrap 컴퓨터가 시작되자마자 가장먼저 실행하는 프로그램 ( 부팅 프로그램 ) 운영체제를 메모리에 로딩한다 1.2 - Interrupts I/O 디바이스 에서 신호가 있을 때 그 신호를 통신해주는 것 system bus 를 통해 CPU에 signal을 보내준다 1.3 - 폰노..

운영체제 2021.09.02