CS/Operating System
[전공생이 설명하는 OS] 동기화 - (1) 용어 및 개념정리
동기화 문제가 왜 발생하는지에 대해서는 [전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제 의 마지막 단락을 참고해주세요. [동기화 관련 용어] (1) Race Condition : 멀티쓰레드 또는 멀티 프로세스 환경에서 공유자원에 동시에 접근할 때, 의도치 않은 결과를 낳는 것을 race condition이라고 하고 다음과 같은 특성을 갖는다. 근본적으로는 [cpu 스케줄링 + 캐시(레지스터 포함) + non-atomic instruction] 때문에 발생하며, 이를 방지하기 위해서는 공유자원에 대한 동기화가 필요하다. Non-Deterministic : 의도하지 않은 결과를 내는데, 결과를 예측할 수 없다. Reproducible : 재현 가능하다. (2) Critical Section :..
![[전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNT2MW%2FbtrAKuZuXQ8%2Fw9T7bXiStbBekEy5l1ucB1%2Fimg.png)
[전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제
1. 쓰레드의 의미 프로세스의 의미를 두가지 측면에서 설명할 수 있다. (자원 관점) 자원 소유자로서의 최소 단위 (제어 관점) schedule 의 최소 단위 / 실행의 단위 보통 개발할 때 하나의 실행 흐름(single execution sequence)만 생각하기 쉽다.. 하지만 실제로 프로세스에는 실타래와 같이 여러개의 실행흐름(multiple execution sequence)이 존재할 수 있다. 이 때 실행의 단위(the unit of execution sequence)를 thread 라고 정의한다. 따라서 현대 os에서 multithreading은 단일 프로세스 내에서 여러개의 실행 흐름을 지원할 수 있는 능력을 의미한다. 가장 중요한 점은 다수의 thread는 같은 프로세스 내의 자원을 공유..
![[전공생이 설명하는 OS] 멀티 코어 프로세스 스케줄링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2tQoT%2FbtrALukeHTh%2FSmcMKwrD1ideAdzzuYVlKk%2Fimg.png)
[전공생이 설명하는 OS] 멀티 코어 프로세스 스케줄링
이전 글 참고 단일 프로세스 스케줄링 & 시뮬레이션 결과 분석 1. Scheduling 분류 3가지 (1) Long-term schedule - job scheduler 라고도 한다. - 제출된 프로그램 실행 요청 중에서 어떤 것을 프로세스로 실행시킬 지 결정하는 스케줄링이다. - 사용자가 OS에 프로그램 실행. letsmakemyselfprogrammer.tistory.com 1. 고려해볼 만한 요소들 단일 코어에서는 언제, 어떤 프로세스를 실행시킬지만 결정하면 되는 문제였다. 하지만 멀티코어 환경에서는 고려해야 할 요소들이 꽤나 복잡하다. ready queue 를 어떻게 운영할 것인가? 한개의 global 큐만 사용할 것인가? 코어 당 한개씩 큐를 사용할 것인가? Cache affinity 를 어떻게..
![[전공생이 설명하는 OS] 프로세스 스케줄링(feat. 알고리즘 장단점 비교)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEWIMH%2FbtrAIggjk9I%2FOHXPVfKtJdDe9NBzyElSgK%2Fimg.png)
[전공생이 설명하는 OS] 프로세스 스케줄링(feat. 알고리즘 장단점 비교)
1. Scheduling 분류 3가지(1) Long-term schedule - job scheduler 라고도 한다. - 제출된 프로그램 실행 요청 중에서 어떤 것을 프로세스로 실행시킬 지 결정하는 스케줄링이다. - 사용자가 OS에 프로그램 실행 요청을 제출 -> `요청 대기큐` - OS는 `요청 대기큐` 중 어떤 프로그램을 `ready state 큐`로 admit 할지 결정해야한다. - admit 되어서 실행가능한 대기 상태가 되면, 프로그램에 대한 PCB가 만들어져 프로세스가 된다. (2) Mid-term schedule - swapper 라고도 하며, 보통 swap function 을 가리키는 말. - multiprogramming 의 정도를 결정하는 요인이 된다. - swap..
![[전공생이 설명하는 OS] 프로세스(Process)란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLjeWt%2FbtrADECgs52%2Fit7KZuqUbCL65C9ddsGLo0%2Fimg.png)
[전공생이 설명하는 OS] 프로세스(Process)란?
1. Program vs Process - program : 디스크에 byte sequence로 저장되어 있는 passive entity - process : 메모리에 execution sequence 로 load 되어 있는 active entity 2. Process Description `프로세스` 를 설명할 때는 크게 3가지의 맥락을 고려한다. (1) 시스템 수준에서 os 가 프로세스를 관리하기 위한 정보(2) User Program level 에서의 정보 (text code, data, stack, ...)(3) 프로세스를 실행하는 하드웨어의 수준의 정보 (1) System Level OS의 관리 대상이라는 점에서 프로세스를 바라본다. OS 는 프로세스 전체 목록을 가지고 있다. 이를 p..
![[전공생이 설명하는 OS] 쉽게 읽는 OS의 발전 이야기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9K7pF%2FbtrAz66I64D%2FEWdWKxDji4rv8OnkqwNjn0%2Fimg.png)
[전공생이 설명하는 OS] 쉽게 읽는 OS의 발전 이야기
1. OS 의 목적 OS는 자원관리자로서의 성경이 강하다. 주로 기기 사용자가 안전하고 효율적으로 하드웨어를 사용할 수 있도록 돕는다. OS 의 목적은 크게 3가지로 나타낼 수 있다. 편의성. 컴퓨터 사용자가 하드웨어를 조작하기 위한 instruction 이나 구현방법 등을 알지 못해도 안전하게 사용할 수 있게 한다. 효율성. 사용자 경험을 최대화하기 위해 cpu utilization, cache memory, scheduling 등 자원을 관리 한다. 유연함. OS 가 개선될 때, 기존 User Application 에 영향을 주지 않으면서 발전할 수 있도록 한다. 2. OS의 발전 William Stalling 교재에서는 OS 의 발전을 크게 4단계로 구분한다. 1) Serial Processing ..