728x90

운영체제 62

24.03.22 운영체제, KEYWORD

운영체제 24 세마포어 24.1 세마포어 : 정의 세마포어는 정수 값을 갖는 객체로서 두 개의 루틴으로 조작할 수 있다. POSIX 표준에서 이 두 개의 루틴은 sem_wait()와 sem_post()이다. 세마는 초기 값에 의해 동작이 결정되기 때문에, 사용하기 전 제일 먼저 값을 초기화 해야한다. 같은 프로세스 내의 쓰레드 간에 세마포어를 공유한다. 두 루틴들은 동시에 다수 쓰레드들에 의해 호출될 수 있다. 임계영역이 적절히 보호되어야 한다. 임계영역 보호를 위해 사용할 함수내에서 임계영역 보호문제가 존재한다. sem_wait() 함수는 세마포어 값이 1 이상이면 즉시 리턴하거나, 해당 세마포어 값이 1 이상이 될 때까지 호출자를 대기시킨다. 다수의 쓰레드들이 sem_wait()을 호출 할 수 있기 ..

운영체제 24. 세마포어

24. 세마포어 24.1 세마포어 : 정의 세마포어는 정수 값을 갖는 객체로서 두 개의 루틴으로 조작할 수 있다. POSIX 표준에서 이 두 개의 루틴은 sem_wait()와 sem_post()이다. 세마는 초기 값에 의해 동작이 결정되기 때문에, 사용하기 전 제일 먼저 값을 초기화 해야한다. 같은 프로세스 내의 쓰레드 간에 세마포어를 공유한다. 두 루틴들은 동시에 다수 쓰레드들에 의해 호출될 수 있다. 임계영역이 적절히 보호되어야 한다. 임계영역 보호를 위해 사용할 함수내에서 임계영역 보호문제가 존재한다. sem_wait() 함수는 세마포어 값이 1 이상이면 즉시 리턴하거나, 해당 세마포어 값이 1 이상이 될 때까지 호출자를 대기시킨다. 다수의 쓰레드들이 sem_wait()을 호출 할 수 있기 때문에,..

책/운영체제 2024.03.23

24.03.21 운영체제

운영체제 23. 컨디션 변수 쓰레드가 실행을 계속하기 전에, 특정 조건의 만족 여부를 검사해야 하는 경우가 있다. 그런 대기문은 어떻게 구현할까? 쓰레드가 특정 조건이 참이 될때까지 잠자면서 기다리는 방법이 좋다. 23.1 컨디션 변수의 개념과 관련 루틴 쓰레드 실행시, 특정 조건이 만족될 때까지의 대기를 위해 컨디션 변수(Conditional variable)라고 불리는 개념을 사용할 수 있다. 컨디션 변수는 일종의 큐 자료 구조이다. 컨디션 변수는 쓰레드 실행에서 어떤 상태(또는 어떤 조건)가 원하는 것과 다를 때 조건이 만족되기를 대기하는 큐이다. 다른 쓰레드가 실행되어 시스템의 상태를 변경시키고, 해당 조건이 만족되었을 때, 대기중인 쓰레드(하나 이상의 쓰레드가 깨어날 수도 있다.) 를 깨워 실행..

운영체제 22. 락 기반의 병행 자료 구조

22. 락 기반의 병행 자료 구조 자료구조에 락을 추가하면 해당 자료구조를 경쟁 조건으로부터 안전한 쓰레드 사용(thread safe) 자료 구조로 만들 수 있다. 락이 어떤 방식으로 추가되었느냐에 따라 그 자료구조의 정확성과 성능이 좌우된다. 22.1 병행 카운터 카운터는 가장 간단한 자료구조 중 하나이다. 보편적으로 사용되는 구조이면서 인터페이스가 간단하다. 간단하지만 확장성이 없다. 이 병행이 가능한 카운터는 간단하지만 정확하게 동작한다. 사실 이 카운터는 가장 간단하고 가장 기본적인 병행 자료 구조의 보편적인 디자인 패턴을 따른다. 자료구조를 조작하는 루틴을 호출할 때 락을 추가했고, 그 호출문이 리턴될 때 락이 해제되도록 하였다. 이 방식은 모니터(monitor)를 사용하여 만든 자료구조와 유사..

책/운영체제 2024.03.19

24.03.18 운영체제, KEYWORD, PintOS

운영체제 21. 락 프로그래머들은 소스코드의 임계영역을 락으로 둘러서 그 임계영역이 마치 하나의 원자단위 명령어인것 처럼 실행되도록 한다. 21.1 락 : 기본개념 락은 둘 중 하나의 상태를 갖는다. 첫 번째는 사용가능(available) 상태 (unblocked 또는 free) 이다. 즉, 어떤 쓰레드도 락을 소유하고 있지 않다. 두 번째는 사용 중(acquired) 상태이다. 즉, 임계영역에서 정확히 하나의 쓰레드가 락을 획득한 상태이다. lock과 unlock 루틴의 의미는 간단하다. lock() 루틴 호출을 통해 락 획득을 시도한다. 만약 어떤 쓰레드도 락을 갖고 있지 않으면 그 쓰레드는 락을 획득하여 임계영역 내로 진입한다. 이렇게 락을 획득한 쓰레드를 락 소유자(owner)라고 부른다. 만약 ..

운영체제 21. 락

21. 락 프로그래머들은 소스코드의 임계영역을 락으로 둘러서 그 임계영역이 마치 하나의 원자단위 명령어인것 처럼 실행되도록 한다. 21.1 락 : 기본개념 락은 둘 중 하나의 상태를 갖는다. 첫 번째는 사용가능(available) 상태 (unblocked 또는 free) 이다. 즉, 어떤 쓰레드도 락을 소유하고 있지 않다. 두 번째는 사용 중(acquired) 상태이다. 즉, 임계영역에서 정확히 하나의 쓰레드가 락을 획득한 상태이다. lock과 unlock 루틴의 의미는 간단하다. lock() 루틴 호출을 통해 락 획득을 시도한다. 만약 어떤 쓰레드도 락을 갖고 있지 않으면 그 쓰레드는 락을 획득하여 임계영역 내로 진입한다. 이렇게 락을 획득한 쓰레드를 락 소유자(owner)라고 부른다. 만약 다른 쓰레..

책/운영체제 2024.03.18

24.03.17 운영체제, PintOS

운영체제 20. 병행성 : 개요 하나의 쓰레드의 상태는 프로세스의 상태와 매우 유사하다. 쓰레드는 프로그램 카운터와 연산을 위한 레지스터들을 가지고 있다. 만약 두 개의 쓰레드가 하나의 프로세서에서 실행 중이라면 실행하고자 하는 쓰레드는 반드시 문맥교환을 통해 실행중인 쓰레드와 교체 되어야 한다. 프로세스의 쓰레드들의 상태를 저장하기 위해서는 하나 또는 그 이상의 쓰레드 제어블럭(TCB : thread control block)이 필요하다. 프로세스와의 가장 큰 차이는 프로세스의 경우와 달리 쓰레드간의 문맥 교환에서는 주소공간을 그대로 사용한다는 것이다.(사용하고 있던 페이지 테이블을 그대로 사용하면 된다.) 쓰레드와 프로세스의 또 다른 차이는 스택에 있다. 고전적 프로세스 주소 공간과 같은 모델(단일 ..

운영체제 20. 병행성 : 개요

20. 병행성 : 개요 하나의 쓰레드의 상태는 프로세스의 상태와 매우 유사하다. 쓰레드는 프로그램 카운터와 연산을 위한 레지스터들을 가지고 있다. 만약 두 개의 쓰레드가 하나의 프로세서에서 실행 중이라면 실행하고자 하는 쓰레드는 반드시 문맥교환을 통해 실행중인 쓰레드와 교체 되어야 한다. 프로세스의 쓰레드들의 상태를 저장하기 위해서는 하나 또는 그 이상의 쓰레드 제어블럭(TCB : thread control block)이 필요하다. 프로세스와의 가장 큰 차이는 프로세스의 경우와 달리 쓰레드간의 문맥 교환에서는 주소공간을 그대로 사용한다는 것이다.(사용하고 있던 페이지 테이블을 그대로 사용하면 된다.) 쓰레드와 프로세스의 또 다른 차이는 스택에 있다. 고전적 프로세스 주소 공간과 같은 모델(단일 쓰레드 프..

책/운영체제 2024.03.17

24.03.16 운영체제, PintOS

운영체제 19. 완전한 가상 메모리 시스템 19.1 VAX/VMS 가상 메모리 VMS는 컴퓨터의 구조적 결함을 소프트웨어로 보완한 훌륭한 사례다. 운영체제가 이상적인 개념과 환상을 제공하기 위해 하드웨어에 의존하지만, 하드웨어가 모든것을 해내지 못할 경우도 있다. 하드웨어 결함에도 불구하고 시스템이 효과적으로 작동하기 위해서 VMS 운영체제가 무엇을 하였는지 볼 것이다. 메모리 관리 하드웨어 VAX-11은 프로세스마다 512바이트 페이지 단위로 나누어진 32비트 가상주소 공간을 제공한다. 가상주소는 23비트 VPN과 9비트 오프셋으로 구성되어있다 VPN의 상위 두 비트는 페이지가 속한 세그멘트를 나타내기 위해서 사용되었다. 이 시스템은 하이브리드 구조를 갖고 있다. 주소공간의 하위 절반은 ‘프로세스 공간..

운영체제 19. 완전한 가상 메모리 시스템

운영체제 19. 완전한 가상 메모리 시스템 19.1 VAX/VMS 가상 메모리 VMS는 컴퓨터의 구조적 결함을 소프트웨어로 보완한 훌륭한 사례다. 운영체제가 이상적인 개념과 환상을 제공하기 위해 하드웨어에 의존하지만, 하드웨어가 모든것을 해내지 못할 경우도 있다. 하드웨어 결함에도 불구하고 시스템이 효과적으로 작동하기 위해서 VMS 운영체제가 무엇을 하였는지 볼 것이다. 메모리 관리 하드웨어 VAX-11은 프로세스마다 512바이트 페이지 단위로 나누어진 32비트 가상주소 공간을 제공한다. 가상주소는 23비트 VPN과 9비트 오프셋으로 구성되어있다 VPN의 상위 두 비트는 페이지가 속한 세그멘트를 나타내기 위해서 사용되었다. 이 시스템은 하이브리드 구조를 갖고 있다. 주소공간의 하위 절반은 ‘프로세스 공간..

책/운영체제 2024.03.16
728x90