CS

    [전공생이 설명하는 OS] 동기화 - (3) 조건동기화 (pthread 예제 코드 포함)

    [전공생이 설명하는 OS] 동기화 - (3) 조건동기화 (pthread 예제 코드 포함)

    Review 쓰레드(Thread)와 동기화 문제 동기화 - (1) 용어 및 개념정리 동기화 - (2) 상호배제 전략(Mutex) 이전 포스팅에서 지속적으로 언급했듯이, 멀티프로세스 또는 멀티쓰레드 환경에서 공유자원을 사용하다보면 race condition 이 발생할 수 있고 이를 해결하기 위해서는 동기화가 필요하다. 동기화에는 상호배제(Mutual Exclusion) 전략과 조건 동기화(Condition Synchronization) 전략이 있다. 지난 포스팅까지는 상호배제의 관점에서 동기화를 알아보았다. 상호배제는 공유자원은 한번에 하나씩 사용하는데 집중한다. 비슷하지만 조건동기화는 Critical Section에 대기하는 프로세스(또는 쓰레드)를 Ordering 하는 전략이다. 조건 동기화 조건동기화..

    [전공생이 설명하는 OS] 동기화 - (2) 상호배제 전략 (Mutex)

    [전공생이 설명하는 OS] 동기화 - (2) 상호배제 전략 (Mutex)

    지난 포스팅(동기화 - (1) 용어 및 개념정리)에서 정리했듯이, 동기화는 Critical Section 에 대한 접근 제어를 적절하게 잘 한다는 것이고, 구체적으로 MutualExclusion / Progress / BoundedWaiting 3가지의 requirement를 만족시켜야한다고 언급했다. 이런 특성을 만족시키는 동기화 전략은 (1)상호배제, (2)조건부 동기화 전략이 있는데, 이번 포스팅에서는 상호배제의 측면에서 동기화 기법을 살펴보도록 한다. 상호배제 차원의 동기화 전략은 SW의 방식과 HW의 방식으로 나눌 수 있다. 1. SW approach 크게 1) Peterson의 알고리즘, 2) Interrupt 차단방식 두가지를 예로 들 수 있다. 결론부터 이야기하자면, SW 방식의 동기화 전..

    [전공생이 설명하는 OS] 동기화 - (1) 용어 및 개념정리

    동기화 문제가 왜 발생하는지에 대해서는 [전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제 의 마지막 단락을 참고해주세요. [동기화 관련 용어] (1) Race Condition : 멀티쓰레드 또는 멀티 프로세스 환경에서 공유자원에 동시에 접근할 때, 의도치 않은 결과를 낳는 것을 race condition이라고 하고 다음과 같은 특성을 갖는다. 근본적으로는 [cpu 스케줄링 + 캐시(레지스터 포함) + non-atomic instruction] 때문에 발생하며, 이를 방지하기 위해서는 공유자원에 대한 동기화가 필요하다. Non-Deterministic : 의도하지 않은 결과를 내는데, 결과를 예측할 수 없다. Reproducible : 재현 가능하다. (2) Critical Section :..

    RSA 파이썬 구현 (key pair generator)

    rsa 는 두 소수의 곱으로 이루어진 어떤 수 n를 소인수분해하는 문제가 어렵다는 점을 이용한다. 따라서 n 이 충분히 큰 수여야하고, n 을 두 소수로 소인수분해할 수 있으면 암호가 깨진다. main 함수 키 쌍을 생성한 후, 암호화 복호화가 잘 이루어지는지 확인한다. """ RSA test """ if __name__ == "__main__": e, d, n = keygen(512) # 512-bits 키 생성 M = 88 # 평문 C = encrypt(M, e, n) # 암호문 MM = decrypt(C, d, n) # 복호화한 평문 if M == MM: print("Example of RSA Algorithm works successfully") print("M={}, PU=({},{}), PR=..

    [전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제

    [전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제

    1. 쓰레드의 의미 프로세스의 의미를 두가지 측면에서 설명할 수 있다. (자원 관점) 자원 소유자로서의 최소 단위 (제어 관점) schedule 의 최소 단위 / 실행의 단위 보통 개발할 때 하나의 실행 흐름(single execution sequence)만 생각하기 쉽다.. 하지만 실제로 프로세스에는 실타래와 같이 여러개의 실행흐름(multiple execution sequence)이 존재할 수 있다. 이 때 실행의 단위(the unit of execution sequence)를 thread 라고 정의한다. 따라서 현대 os에서 multithreading은 단일 프로세스 내에서 여러개의 실행 흐름을 지원할 수 있는 능력을 의미한다. 가장 중요한 점은 다수의 thread는 같은 프로세스 내의 자원을 공유..

    [전공생이 설명하는 OS] 멀티 코어 프로세스 스케줄링

    [전공생이 설명하는 OS] 멀티 코어 프로세스 스케줄링

    이전 글 참고 단일 프로세스 스케줄링 & 시뮬레이션 결과 분석 1. Scheduling 분류 3가지 (1) Long-term schedule - job scheduler 라고도 한다. - 제출된 프로그램 실행 요청 중에서 어떤 것을 프로세스로 실행시킬 지 결정하는 스케줄링이다. - 사용자가 OS에 프로그램 실행. letsmakemyselfprogrammer.tistory.com 1. 고려해볼 만한 요소들 단일 코어에서는 언제, 어떤 프로세스를 실행시킬지만 결정하면 되는 문제였다. 하지만 멀티코어 환경에서는 고려해야 할 요소들이 꽤나 복잡하다. ready queue 를 어떻게 운영할 것인가? 한개의 global 큐만 사용할 것인가? 코어 당 한개씩 큐를 사용할 것인가? Cache affinity 를 어떻게..

    [전공생이 설명하는 OS] 프로세스 스케줄링(feat. 알고리즘 장단점 비교)

    [전공생이 설명하는 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 out, swap..

    [전공생이 설명하는 OS] 프로세스(Process)란?

    [전공생이 설명하는 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 는 프로세스 전체 목록을 가지고 있다. 이를 proc..