본문 바로가기

CS/OS11

[OS] 09. 디스크 관리 1. 디스크의 구조 디스크에 데이터가 저장될 때에는 논리블록 단위로 저장되고, 외부로 입출력이 일어날 때에도 논리블록 단위로 전송된다. 논리블록에 저장된 데이터를 접근하기 위해서는 해당 블록의 인덱스 번호를 디스크에 전달해야 한다. 각 논리블록이 저장되는 디스크 내의 물리적인 위치를 섹터(sector)라고 부른다. 디스크는 마그네틱의 원판으로 구성되며 하나일 수도 있고 여러 개일 수도 있다. 각각의 원판은 트랙(track)으로 구성되고 각 트랙은 섹터로 나뉘며, 섹터에 최소한의 단위 정보가 저장된다. 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합을 실린더(cylinder)라고 부른다. 디스크에 데이터를 읽고 쓰기 위해서는 암(arm)이 해당 섹터가 위치한 실린더로 이동한후 원판이 회전하여 디스크.. 2022. 1. 3.
[OS] 08. 가상메모리 운영체제는 메모리의 연장 공간으로 디스크의 스왑 영역을 사용한다. 그렇기 때문에 운영체제는 프로그램이 물리적 메모리를 고려할 필요 없이 자기 자신만이 메모리를 사용하는 것처럼 가정해 프로그램하는 것을 지원한다. 프로그램은 0번지부터 시작하는 자기 자신만의 메모리 주소 공간을 가정할 수 있는데, 이러한 메모리 공간을 가상메모리(virtual memory)라고 부른다. 즉 가상 메모리는 프로세스마다 각각 0번지부터의 주소 공간을 가지게 되며, 이들 공간 중 일부는 물리적 메모리에 적재되고 일부는 디스크의 스왑 영역에 존재하게 된다. 프로세스의 주소 공간을 메모리로 적재하는 단위에 따라 가상메모리 기법은 요구 페이징 방식과 요구 세그먼테이션 방식으로 구현될 수 있다. 대부분의 경우는 요구 페이징 방식을 사용한.. 2022. 1. 1.
[OS] 프로세스와 스레드 프로세스와 스레드의 차이 [프로그램 - > 프로세스] 프로그램 : 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로그램을 실행하는 순간 해당 파일은 컴퓨터 메모리에 올라가게 되고, 이 상태를 동적인 상태라고 하며 이 상태의 프로그램을 프로세스라고 한다. [프로세스 → 스레드] 스레드 : 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위 스레드는 프로세스와 다르게 스레드 간 메모리를 공유하며 작동된다. 스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는 것이다. 즉, 스레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로다. [프로세스와 스레드의 작동 방식] 프로세스가 메모리에 올라갈 때 운영체제로부.. 2021. 12. 29.
[OS] 07. 메모리 관리 1. 주소 바인딩 프로그램이 메모리에 적재되면 그 프로세스를 위한 독자적인 주소 공간이 생성된다. 이를 논리적 주소(logical address) 혹은 가상 주소(virtual address)라고 부른다. 논리적 주소는 각 프로세스마다 독립적으로 할당되며 0번지부터 시작된다. 반면 물리적 주소(physical address)는 물리적 메모리에 실제로 올라가는 위치를 말한다. 보통 물리적 메모리의 낮은 주소 영역에는 운영체제가 올라가고, 높은 주소 영역에는 사용자 프로세스들이 올라간다. 프로세스가 실행되기 위해서는 해당 프로그램이 물리적 메모리에 올라가 있어야 한다. 또한 CPU가 기계어 명령 수행을 위해 논리적 주소를 통해 메모리 참조를 하게 되면 해당 논리적 주소가 물리적 메모리의 어느 위치에 매핑되는.. 2021. 12. 27.
[OS] 06. CPU 스케줄링 CPU : 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치 CPU는 프로그램이 시작되어 메모리에 올라가면 프로그램 카운터가 가리키는 주소의 기계어 명령을 하나씩 수행한다. 기계어 명령은 크게 3가지로 나뉜다. ①CPU 내에서 수행되는 명령 CPU 내에서만 수행되므로 명령의 수행속도가 매우 빠르다. CPU 내의 레지스터에 있는 두 값을 더해 레지스터에 저장하는 Add 명령이 이에 해당. 사용자 프로그램이 직접 수행할 수 있는 일반명령에 해당한다. ②메모리 접근을 필요로 하는 명령 CPU 내에서 수행되는 명령보다는 시간이 오래 소요되지만 비교적 짧은 시간에 수행할 수 있는 명령에 해당된다. 메모리에 있는 데이터를 CPU로 읽어들이는 Load명령, CPU에서 계산된 결괏값을 메모리에 저장하는.. 2021. 12. 26.
[OS] 스핀락, 뮤텍스, 세마포어 임계 영역에 접근하는데 있어서 동기화를 위해 사용되는 기법인 스핀락, 뮤텍스, 세마포어에 대해서 알아보자. locks 방식을 이용한 동기화 기법 스핀락(spinlock), 뮤텍스(mutex) 상호 배제가 되도록 만들어진 lock 변수 사용 lock을 소유한 스레드만이 임계 영역에 진입할 수 있다. lock을 소유하지 않은 스레드는 대기한다. wait-signal 방식을 이용한 동기화 기법 세마포어(semaphore) n개의 자원을 사용하려는 m개의 프로세스(또는 스레드)의 관리 제공 자원을 소유하지 못한 프로세스(또는 스레드)는 대기(wait) 자원의 사용을 마친 프로세스(또는 스레드)는 알림(signal) 스핀락(Spinlock) lock 변수 true : lock을 잠근다, lock을 소유한다. fa.. 2021. 12. 22.