반응형

42

컴퓨터 구조 Ch02_"Language of the Computer-4"

2.11 병렬성과 명령어 : 동기화 Task들이 종속 관계 및 협력 관계에 있을때 데이터 경쟁관계(Race Condition)의 위험이 있다. 즉, 이벤트의 일어나는 순서에 따라 프로그램의 결과가 달라질 수 있는 상황이다. 동기화 메커니즘은 일반적으로 사용자 수준 소프트웨어 루틴에서 제공되는데 이 소프트웨어 루틴들은 하드웨어가 제공하는 동기화 명령을 사용한다. 여기서는 간단하게 lock, unlock 동기화를 사용한다. lock, unlock은 critical section이라 칭하는 하나의 공간을 생성하며 이 공간은 오직 하나의 프로세서만이 실행 가능하다.즉, Mutual Exclusion하게 실행된다는 의미이다. 이런 방법을 제공하기위해 원자적 교환(Atomic swap)을 사용하게된다. 이는 레지스..

컴퓨터 구조 Ch02_"Language of the Computer-3"

2.9 문자와 문자열 오늘날 대부분의 컴퓨터는 8bit 로 문자를 표현하며, 거의 모든 컴퓨터가 ASCII를 사용한다. 문자 데이터는 보통 여러 개가 모여 문자열(String)을 이루는데, 문자열의 길이는 가변적이다. 가변길이 문자열을 표현하는 방법은 아래 세가지가 존재한다. 1) 문자열 맨 앞에 길이를 표시하는 방법 2) 같이 사용되는 변수에 그 길이를 표시하는 방법(구조체 처럼) 3) 마지막에 문자열의 끝을 표시하는 특수 문자를 두는 방법 C언어는 문자열 끝에 0값(Null)을 두는 세번째 방법을 사용한다. 따라서 "Cal"은 67,97,108,0 의 4바이트로 표현한다. 2.10 긴 수치와 주소를 위한 LEGv8의 주소지정 방식 LEGv8의 명령어 길이를 32비트로 고정한 덕택에 하드웨어가 간단하지..

운영체제 Ch09_'Main Memory-2'

9.2 연속 메모리 할당 각 프로세스는 다음 프로세스가 적재된 영역과 인접한 하나의 메모리영역에 적재된다. 9.2.1 메모리 보호(Memory Protection) 만일 시스템이 상한 레지스터와 재배치 레지스터를 가지고 있다면 프로세스는 자신이 소유하지 않은 메모리를 접근할 수 없다 재배치 레지스터는 가장 작은 물리 주소의 값을 저장하고, 상한 레지스터는 논리 주소의 범위 값을 저장한다. 각각의 논리주소는 상한 레지스터가 지정한 범위 안에 존재 해야한다. MMU는 논리적 주소를 동적으로 매핑한다. 문맥 교환에서 디스패처는 올바른 값으로 재배치 및 상한 레지스터를 로드한다. Relocation register cheme 을 통해 OS 및 프로세스의 크기를 동적으로 변경할 수 있다. 9.2.2 메모리 할당(..

책/운영체제 2021.01.11

운영체제 Ch09_'Main Memory-1'

Chapter 9, Main Memory 9.1 배경(Background) 메인 메모리는 현대 컴퓨터 시스템의 운영에 중심적인 역할을 한다. 메모리는 각각 주소가 할당된 일련의 바이트들로 구성된다. CPU는 PC가 지시하는 대로 메오리로부터 다음 수행할 명령어를 가져오는데 그 명령어들은 필요한 경우 추가적인 데이터를 더 가져올 수 있으며 반대로 데이터를 메모리로 내보낼 수도 있다. 9.1.1 기본 하드웨어(Basic HW) 메인 메모리와 각 레지스터들은 CPU가 직접 접근할 수 있는 유일한 범용 저장장치이다. 각 CPU 코어에 내장된 레지스터들은 일반적으로 CPU 클럭(Clock)의 1사이클내에 접근이 가능하다. 그러나 메모리 버스를 통해 전송되는 메인 메모리의 경우 CPU 클록의 많은 사이클이 소모되며..

책/운영체제 2021.01.11

운영체제 Ch05_'CPU Scheduling-2'

5.3 스케줄링 알고리듬(Scheduling Algorithms) 프로세스가 하나라고 가정한 상태에서 알고리즘을 설명한다. 5.3.1 선입 선처리 스케줄링(First Come, First Served Scheduling, FCFS) CPU를 먼저 요청하는 프로세스가 CPU를 먼저 할당 받는다. FIFO Queue로 쉽게 관리할 수 있다. 비선점(Nonpreemptive) 알고리듬 이다. 프로세스가 Ready Queue에 집입하면, 이 프로세스의 프로세스 제어 블록(PCB)을 큐의 끝에 연결한다. CPU가 가용 준비상태가 되면, Ready Queue 의 앞부분에 있는 프로세스에 할당 된다. 평균 대기시간은 종종 대단히 길 수 있다. 위와 같은 상황에서 평균 대기 시간의 최대값은 (0+24+27)/3 = 1..

책/운영체제 2021.01.11

운영체제 Ch05_'CPU Scheduling-1'

Chapter 5, CPU Scheduling CPU 스케줄링은 다중 프로그램 운영체제의 기본이다. 운영체제는 CPU를 프로세스 간에 교환함으로써, 컴퓨터를 보다 생산적으로 사용하게 한다. 일반적인 스케줄링 개념을 논의하는 경우 프로세스 스케줄링을 사용하고 스레드에 국한된 개념을 가르키는 경우 스레드 스케줄링이라는 용어를 사용하기로 한다. 5.1 개본 개념(Basic Concepts) 다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행중인 프로세스를 가지게 하는데 있다.(Block 안된) 기본 아이디어는 하나의 프로세스가 I/O 요청이 완료되기를 기다려야 한다면, 시간을 낭비하지 않고 CPU 자원을 실행 가능한 다른 프로세스에게 할당을 해주는 것이다. 5.1.1 CPU-I/O 버스트 사이..

책/운영체제 2021.01.11

운영체제 Ch04_'Thread and Concurrency-2'

4.3 다중 스레드 모델(Multithreading Models) 사용자 스레드(User Thread)는 사용자 수준에서, 커널 스레드(Kernel Thread)는 커널 수준에서 제공된다 사용자 스레드는 유저 레벨 라이브러리에서 관리하며 OS 커널은 사용자 스레드 수를 인식하지 못한다. 커널 스레드는 커널의 지원을 받아 관리되며 스케줄 가능한 단위이다. 사용자 스레드와 커널 스레드는 궁극적으로 어떠한 연관 관계가 존재해야 한다. 아래는 관계를 확립하는 세 가지 일반적인 방법이다. 4.3.1 다대일 모델(Many to One Model) 많은 사용자 수준 스레드를 하나의 커널 스레드로 사상한다. 스레드 관리는 사용자 공간의 스레드 라이브러리에 의해 행해진다. 하나의 스레드가 Block 되는 System C..

책/운영체제 2021.01.10

운영체제 Ch04_'Thread and Concurrency-1'

Chapter 4, Thread and Concurrency 4.1 개요 스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, PC(Program Counter), 레지스터 집합, 스택 으로 구성된다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린 파일, 신호 등 자원등을 공유 4.1.1 동기(Motivation) 다중 코어 시스템에서 처리 능력을 향상시키도록 설계될 수있다. 이러한 응용은 다중 계산 코어를 사용하여 다수의 CPU-집중 작업을 병렬로 처리할 수 있다. 하나의 프로그램이 여러개의 비슷한 작업을 수행할 필요가 있는 상황들 또한 사용된다. 예를 들어, 웹서버는 클라이언트로 부터 웹 페이지나 이미지, 소리 등에 대한 요청을 받는데 만약 단일 스레드 프로세스로 동..

책/운영체제 2021.01.10

운영체제 Ch03_'Process-2'

3.3 프로세스에 대한 연산 3.3.1 프로세스 생성(Process Creation) 실행되는 동안 프로세스는 여러 개의 새로운 프로세스들을 생성할 수 있다. 생성하는 프로세스를 부모 프로세스라 하고, 새로운 프로세스는 자식 프로세스라고 부른다. 계속해서 생성하다보면 결과적으로 프로세스의 트리를 생성한다. 현대 운영체제는 PID라는 프로세스 식별자를 사용해 프로세스를 구별하는데 보통 정수로 되어있다. 위 그림은 Linux 운영체제의 프로세스 트리를 보여주고 있으며 이름과 PID가 확인된다. 언제나 PID가 1인 systemd 프로세스가 모든 사용자 프로세스의 루트 부모 프로세스 역할을 수행하고 시스템이 부트될때 생성되는 첫 번째 사용자 프로세스이다. 일반적으로 프로세스가 자식 프로세스를 생성할 때, 자식..

책/운영체제 2021.01.08

운영체제 Ch03_'Process-1'

Ch3 Process 현대의 컴퓨터 시스템들은 메모리에 다수의 프로그램이 적재되어 병행 실행되는 것을 허용한다. 이러한 필요성이 프로세스의 개념을 만들었으며, 프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대 컴퓨팅에서 작업의 단위이다. 3.1 프로세스 개념 3.1.1 프로세스 비공식적으로, 프로세스란 실행 중인 프로그램이다. 이후부터 프로세스(Process)와 작업(Job) 둘다 사용해 설명한다. 프로세스의 메모리리 배치는 일반적으로 여러 섹션으로 구분된다. Text : 실행코드 Data : 전역 변수 Heap : 프로그램 실행 중 동적으로 할당되는 메모리 Stack : 함수를 호출할 때 임시 데이터 저장장소(매개변수, 복귀주소, 지역변수) 텍스트 및 데이터 섹션 크기는 고정된다. 그러나 스택 ..

책/운영체제 2021.01.07
반응형