CS/OS 23

[운영체제] 메모리 분할 ( Memory Partioning ) [ 비연속 메모리 할당 ]

[운영체제] 메모리 분할 ( Memory Partioning ) [ 연속 메모리 할당 ] 다수의 프로세스에게 메모리를 분할해줘야 한다. 이번 포스팅에서는 연속 메모리 할당 방식의 메모리 분할법을 다루겠다. 연속 메모리 할당이란? 프로세스의 구성요소가 메모리에 연속된 주소 lordofkangs.tistory.com 지난 포스팅에서는 연속 메모리 할당방식에서의 메모리 분할기법을 알아보았다. 이번 포스팅은 실제 환경에서 사용되는 비연속 메모리 할당방식의 메모리 분할 기법을 알아보겠다. 비연속 메모리 할당 비연속 메모리 할당은 프로그램의 코드가 메모리에 비연속적으로 할당되는 방식을 의미한다. 페이징기법 (Paging) 주기억장치를 고정된 크기의 파티션으로 나누고 프로세스 또한 같은 고정된 크기의 조각으로 나눈다..

CS/OS 2021.10.29

[운영체제] 메모리 분할 ( Memory Partioning ) [ 연속 메모리 할당 ]

연속 메모리 할당이란? 프로세스의 구성요소가 메모리에 연속된 주소로 저장되는 방식을 연속 메모리 할당이라 부른다. 연속 메모리 할당에는 두 가지 메모리 분할 방식이 존재한다. 1. 고정 분할 2. 동적 분할 고정 분할 고정분할은 시스템 생성시 주기억장치가 이미 특정 크기로 고정된 파티션들로 분할되는 방식이다. ▷ 균등분할 : 모든 파티션의 크기가 일정 1. 프로세스 크기 > 파티션 고정 크기 프로세스가 파티션보다 크면 프로세스를 모듈 단위로 나누어 디스크와 주기억장치 사이에서 할당을 제어하는 오버레이(Overlay) 기법이 사용되어야 한다. 그만큼 오버헤드가 증가한다. 2. 프로세스 크기 < 파티션 고정 크기 파티션을 프로세스가 효율적으로 사용못하고 공간이 남는 내부단편화 문제가 생긴다. ▷ 비균등분할 ..

CS/OS 2021.10.26

[운영체제] 메모리 관리 요구조건

다수의 프로그램을 운용하려면 메모리를 적절히 분할하고 프로그램을 적절히 배치해야한다. 이같은 작업을 '메모리 관리'라고 하고 운영체제에 의해서 동적으로 이루어진다. 메모리 관리 요구조건 1) 재배치 ( Relocation ) 2) 보호 ( Protection ) 3) 공유 ( Sharing ) 4) 논리적 구성 ( Logical Organization ) 5) 물리적 구성 ( Physical Organization ) 1) 재배치 ( Relocation ) 특정 주소에서 수행 중인 프로세스를 다른 주소로 옮기는 작업 주기억장치 공간은 한정되기에 스와핑(swapping)이 일어난다. 스와핑이란, 불필요한 프로세스를 디스크로 옮기고(스왑아웃, 보류상태) 다른 프로세스를 메모리에 적재시키는(스왑인, 준비상태)..

CS/OS 2021.10.24

[운영체제] 상호 배제 ( Mutual Exclusive ) 및 세마포어

상호배제를 보장받기 위한 요구조건이 있다. 1) 단 하나의 프로세스만이 임계영역에 진입되어야 한다. 2) 임계 영역이 아닌 곳에서 수행이 멈춘 프로세스는 다른 프로세스 수행을 간섭해서는 안된다. 3) 임계 영역에 접근하고자 하는 프로세스의 수행이 무한히 미루어져서는 안된다. 4) 임계 영역이 비어있으면 즉시 임계영역에 들어갈 수 있다. 5) 프로세서 개수나 상대적 프로세스 수행속도에 대한 가정은 없어야 한다. ( 독립적 ) 6) 임계 영역에 들어간 프로세스는 일정시간 내에 나와야 한다. 상호배제 보장 요구조건 만족을 위한 하드웨어 지원 1) 인터럽트 금지 단일처리기에서의 병행처리는 오버래핑(Overlapping)이 아닌 인터리빙(Interleaving)이 일어난다. 그러므로 임계영역에 들어간 프로세스의 ..

CS/OS 2021.10.12

[운영체제] 프로세스 간 관계

프로세스간 관계는 3가지가 있다. 1. 경쟁관계 독립적인 프로세스는 다른 프로세스를 인식하지 못하면 경쟁(competition)에 놓인다. 주로 '타이밍'에 영향을 받는다. 디스크, 파일, 프린터를 동시에 사용하려는 경쟁이 발생하므로 OS는 이를 제어해야한다. - 상호배제 두 개의 프로세스가 동시에 접근할 수 없는 자원을 임계자원(critical resource)라 한다. 임계자원이 존재하는 코드를 임계영역(critical section)이라 한다. 상호배제란 한 프로세스만이 임계영역에 들어갈 수 있음을 의미한다. 상호배제가 보장되지 않으면 여러 프로세스가 자원에 동시에 접근하게 된다. 그러므로 OS는 상호배제를 보장해주어야 한다. 그러나 상호배제 방식은 상황에 따라 다르며 OS가 모든 상호배제 요구사항..

CS/OS 2021.10.12

[운영체제] 병행성

OS는 한정된 자원을 최대한 사용하기 위해 병렬처리를 한다. 병렬처리를 위한 기법으로 인터리빙(Interleaving)과 오버래핑(Overlapping)이 있다. 인터리빙은 멀티프로그래밍을 구현한다. 처리기가 하나여도 여러 개의 프로세스를 번갈아 실행하면서 마치 병렬적으로 처리되고 있는 듯 보이게 한다. 오버래핑은 멀티프로세싱을 구현한다. 여러 개의 처리기로 동시에 여러 작업을 처리한다. 한 처리기로 프로세스A를 처리하면서 다른 처리기로 프로세스B를 처리하는 것과 같다. 병렬처리를 통해 구현된 성질을 병행성이라고 부른다. 병행성에는 한 가지 문제점이 있다. 각각의 프로세스의 속도를 예측할 수 없다는 것이다. 예측할 수 없는 프로세스들이 동일한 자원을 두고 경쟁하다보니 많은 문제를 야기한다. 1. 전역 자..

CS/OS 2021.10.12

[운영체제] Amdal의 법칙 , 구스타프슨 법칙

멀티 코어 구조에서 잠재적인 성능 향상은 응용 프로그램이 병렬자원을 얼마나 효율적으로 이용할 수 있느냐에 달려있다. 여기서 성능 향상이란 처리 속도의 향상을 의미한다. Amdal의 법칙 Amdal의 법칙은 멀티코어시스템에서 수행되는 단일 응용 프로그램의 속도 향상을 구하는 공식이다. f : 전체 코드 중 병렬화 비중 1 - f : 전체 코드 중 순차동작 비중 N : 코어의 개수 1 : 단일 처리기 상에서 프로그램 실행 시간 ( 1 - f ) : 전체 코드 중 순차 코드 처리 시간 f/N : f의 병렬 코드를 N개의 코어로 나누어 처리한 시간 10%가 순차 동작하는 코드라면 f = 0.9이다. 8개의 처리기로 구성된 멀티코어 시스템이라면 속도 향상은 4.7이 나온다. 그렇다면 코어의 개수를 무한히 늘리면 ..

CS/OS 2021.10.12

[운영체제] KLT( Kernel Level Thread ) VS ULT ( User Level Thread )

쓰레드는 두 가지 유형으로 나뉜다. 1) 유저 수준 쓰레드 ( ULT ; Uerser Level Thread ) 2) 커널 수준 쓰레드 ( KLT ; Kerner Level Thread ) 유저 수준 쓰레드 ( UTL ) OS 커널은 PCB를 통해 프로세스를 제어한다. 디스패처 프로그램으로 처리기 인터리빙을 구현하여 스케줄링을 제어하기도 한다. 이처럼 프로세스는 커널 영역 메모리에서 제어가 이루어진다. 그러나 쓰레드는 유저 영역 메모리 안에서도 충분히 제어를 할 수 있다. 스레드 API 라이브러리는 스레드를 제어할 자료구조와 알고리즘을 담고 있다. 라이브러리가 유저영역 메모리 안에 존재하므로 커널 모드로 전환되지 않아도 스레드를 제어할 수 있다. 커널영역에는 스레드 제어 블록을 포함한 제어 알고리즘이 존..

CS/OS 2021.10.11

[운영체제] 쓰레드 ( Thread )

프로세스는 두 가지 특성이 있다. 1. 자원 소유권 프로세스는 할당받은 자원을 소유하는 일종의 컨테이너이다. ( 주소공간, 프로그램 코드, 전역변수, Heap, OS 자원 ) 2. 스케줄링 / 수행 프로세스는 우선순위를 가지며 OS에 의해 스케줄링되어 처리기를 할당받는다. 프로세스는 방대한 크기를 가진다. 정해진 시간에 한번에 처리가 불가능하므로 작은 단위로 나누는데, 이때 나누어진 경량 프로세스가(light process)가 쓰레드(Thread)이다. 쓰레드는 OS가 처리기에 디스패칭하는 단위이다. 하나의 프로세스는 여러 개의 쓰레드로 나뉜다. 그러나 자원 소유권은 하나의 프로세스가 갖는다. 그러므로 여러 개의 쓰레드는 하나의 자원을 공유한다. 이렇게 하나의 프로세스 내에서 여러 개의 쓰레드가 동작할 ..

CS/OS 2021.10.11

[운영체제] 프로세스 제어구조

프로세스 제어는 3가지 작업으로 나뉜다. 1) 수행모드 2) 프로세스 생성 3) 프로세스 교환 ▷ 수행모드 처리기의 수행모드는 두 가지로 나뉜다. 1. 커널모드 2. 유저모드 커널모드란 처리기가 커널 명령어를 실행하는 상태를 의미하고 유저모드란 처리기가 유저 명령어를 실행하는 상태를 의미한다. CPU는 PSW( 프로그램 상태 워드 ) 레지스터로 시스템 상태를 저장하는데, 이때 PSW 중 1bit가 수행모드를 나타낸다. 0이면 사용자모드, 1이면 시스템모드이다. 그렇다면 커널 명령어와 유저 명령어를 두 가지 모드로 구분하여 처리하는 것일까? 지난 포스팅을 예로 들어보겠다. 준비큐에 들어있는 프로세스는 OS의 제어에 따라 처리기를 할당받아 처리된다. PCB1 할당 -> 디스패치 -> PCB2 할당 -> 디스..

CS/OS 2021.10.11