CS/OS(운영체제)
-
가상 메모리(Virtual Memory) 2CS/OS(운영체제) 2022. 6. 12. 19:49
가상 메모리(Virtual Memory) - 가상 메모리는 사용자로 하여금 매우 큰 크기의 main memory를 제공받는다는 느낌을 갖도록 하는 메모리 관리 기법임. 가상 메모리의 장점 - 메인 메모리 안에서 더 많은 프로세스들이 유지될 수 있음. 각 프로그램들이 실행하는 동안 더 적은 메모리를 소모하고, 더 많은 프로그램이 동시적으로 실행될 수 있음. - 물리적 메모리보다 프로세스가 더 큰 메모리를 가지고 있어 수행 능력이 좋음. - Protection과 Isolation을 가능하게 함. - 효율적으로 메모리를 공유할 수 있음. - 부분적재가 가능하기 때문에 I/O loading이 더 적음. VM의 하드웨어와 제어 구조 Page Table Base Register - 레지스터에 적재하는 것은 cost..
-
가상 메모리(Virtual Memory)CS/OS(운영체제) 2022. 6. 12. 19:48
Paging & Segmentation 페이징과 분할의 두 가지 특성은 메모리 관리에서 획기적인 발전의 열쇠이다. 1. 프로세스는 여러 조각(페이지 또는 세그먼트)으로 분할될 수 있으며, 이러한 조각은 실행 중인 메인 메모리에 연속적으로 위치할 필요가 없음. 2. 프로세스 내의 모든 메모리 참조는 실행 시 물리적 주소로 동적으로 변환되는 논리적 주소이다. 이는 프로세스가 상이한 시간에 메인 메모리의 상이한 영역일 수 있다는 것을 의미한다. 지역성(Locality) 프로세스 내의 프로그램 및 데이터 참조가 클러스터링 되는 경향이 있음. - Knuth의 추정 : 90%의 시간이 코드의 10% 내에서 발생한다. - 즉 일정 기간동안 몇 가지 프로세스만 필요할 것이다. 따라서 우리는 지역성의 원리가 가상 메모리..
-
메모리 관리(Memory Management)CS/OS(운영체제) 2022. 6. 12. 18:52
정적 할당 - 프로그램 실행 전에 할당하는 것. - 정적 , 전역 변수를 선언해야 함. 동적 할당 - 런타임 시점에 할당하는 것. - 프로그램이 동적으로 메모리를 할당한다. (요구될 때) 동적 할당이 필요한 이유 : 나중에 얼마나 많은 메모리가 사용될 지 정확히 알 지 못하기 때문이다. Memory Management 메인 메모리는 두 가지 부분으로 나뉜다. 1. 운영체제 부분(resident monitor, kernel) 2. 유저 부분 ( 여러 프로세스들을 수용하기 위해 더 많이 서브로 나뉨.) 요구 사항 : 이전 , 보호 , 공유 , 논리적 조직, 물리적 조직 이전(Relocation) 메인 메모리는 일반적으로 여러 프로세스들 사이에서 공유된다. - 프로그램이 어디에 배치될 지는 미리 알 수 없음...
-
교착 상태(DeadLock)CS/OS(운영체제) 2022. 6. 12. 16:59
교착 상태란 시스템 자원을 두고 경쟁하거나 서로 통신하는 프로세스 집합의 영구 차단을 말한다. 프로세스 집합의 각 프로세스가 다른 차단된 프로세스에 의해서만 트리거될 수 있는 이벤트를 대기하면서 차단되면, 일련의 프로세스가 교착된다. 즉, 이벤트가 트리거 되지 않아 2개 이상의 프로세스를 진행할 수 없는 상황을 말한다. Example. 시스템이 2개의 tape 드라이브를 갖고 있다고 하자. P1과 P2는 각각 하나의 테이프 드라이브를 가지며, 각각 다른 테이프 드라이브가 필요하다. Semaphore A와 B가 1로 초기화 되어 있다. P1 P2 semWait(A); semWait(B); semWait(B); semWait(A); 모든 교착 상태는 2개 이상의 프로세스로 인한 자원 요구 충돌과 관련됨. R..
-
동기화(Synchronization) 2CS/OS(운영체제) 2022. 6. 12. 15:41
Mutual Exclusion(상호 배제)는 지정된 시점에 단일 스레드만 공유 자원에 접근할수 있어야 함을 의미한다. 그러나 꼭 mutex만이 동시 구축에 필요한 요소는 아니다. 조건 동기화 - 다중 스레드 접근 동기화 시스템 상태가 특정 조건을 충족할 때 까지 대기하여 여러 스레드의 실행 순서를 지정하는 것. 상태 변수(Condition Variables) 상태 변수 CV - CV는 이벤트가 발생할 때 까지 스레드가 차단하는 방법이다. - CV는 조건에 대한 대기 큐이다.(디익스트라 알고리즘의 아이디어) - CV는 mutex와 연관되며, 개념적으로 몇 조건과 관련이 있다. Operation - 스레드는 상태 변수에서 대기할 수 있으며, 다른 스레드가 조건을 알릴 때 wake up 된다. 대기 조건 : ..
-
동기화(Synchronization)CS/OS(운영체제) 2022. 6. 1. 23:11
동기화의 목표는 스레드의 협업이 올바르게 운영된다는것을 보증하기 위함임. Race Condition 공유 리소스에 스레드가 접근하게 된다면, Incorrect error 및 Reproducible이 발생한다. 실행 시기에 따라 다르지만, MultiThreading - 실행은 CPU 스케줄러에 의해 interleaved 될 수 있음. (예측할 수 없는 요인) MultiProcessor - 멀티프로세서 안에서의 실행 시기는 다양함. (프로세서가 얼마나 busy한지에 의존) 스레드 문제 - atomic 작업에서 공유 리소스에 접근하기 어려움. - Atomic operation : 전체 또는 전혀 인터럽트가 불가능하다. - 단일 연산자를 여러 개의 명령으로 컴파일 할 수 있음 ( ++ 연산자는 로드/추가/저장의..
-
스레드(Thread)CS/OS(운영체제) 2022. 5. 30. 16:59
Process And Thread Process(프로세스) - 실행 중인 프로그램 ( 프로그램의 인스턴스 ) - 명령 시퀀스 및 관련 시스템 리소스 집합의 실행으로 특정지어지는 활동 단위 2가지 특성 자원 소유 단위(The unit of resource Ownership) - 시간이 흐름에 따라 프로세스에는 메인 메모리, I/O 채널 , I/O 장치 및 파일과 같은 리소스의 제어 또는 소유권이 할당될 수 있음. 일정/실행 단위(The unit of scheduling / execution) - 따라서 프로세스는 실행 상태(Running,Ready, etc..)와 우선순위(Priority)를 가지며 OS에 의해 스케줄링되는 엔티티. 여태까지 포스팅 한 글에서는 Process가 단일 실행 Sequence를 ..
-
인터럽트(Interrupts)CS/OS(운영체제) 2022. 4. 17. 16:22
인터럽트는 프로세서 최적화의 향상을 제공함. - 대부분의 입출력 장치는 프로세서보다 느림. - 프로세서는 장치를 기다리기 위해 반드시 일시정지함. - 프로세서의 사용이 낭비됨. Interrupt Processing HW : 장치 컨트롤러 또는 다른 시스템 하드웨어가 인터럽트 이슈를 발생시킴 -> 프로세서는 현재 명령의 실행을 끝냄 -> 프로세서는 인터럽트 인식 신호를 보냄 -> 프로세서는 PSW와 PC의 컨트롤 스택에 push함 -> 프로세서는 인터럽트에 기반한 새 PC value를 load함 SW : 프로세스 상태 정보를 저장함 -> 프로세스 인터럽트 -> 프로세스 상태 정보를 다시 저장함 -> old PSW와 PC를 재저장함 인터럽트와 예외(Interrupts and Exception) 인터럽트의 두..