분류 전체보기48 [OS] 8장 가상메모리 8장, 가상메모리 프로그램이 CPU에서 실행되려면, 실행에 필요한 부분이 메모리에 올라와 있어야 한다. 이때 운영체제는 어떤 프로그램에 얼마만큼의 메모리 공간을 할당할지를 결정해야 한다. 프로세스의 빠른 수행을 위해 프로세스마다 최소한으로 확보해야 하는 메모리의 크기가 존재하기 때문에, 균등하게 할당하기보다는 특정 프로그램에 집중적으로 할당하는 방식을 사용한다. 프로그램이 실행되기 위해서 프로세스의 주소 공간 전체가 메모리에 올라와야 하는 것은 아니다. 당장 수행해야 할 부분만 메모리에 올려놓고, 나머지는 디스크의 스왑(swap) 영역에 두었다가 필요할 때 가져와 사용할 수 있다. 이를 통해 프로그램은 물리적 메모리 크기를 고려하지 않아도 된다. 프로세스는 자신만이 메모리를 사용한다고 가정하고 0번지부터.. 2022. 1. 5. 데드락(Deadlock, 교착상태)에 대해 데드락이란, 둘 이상의 프로세스가 서로 상대방의 작업이 끝나기만을 기다리며 무한 대기에 빠지는 상황을 말한다. 데드락의 발생 조건 상호 배제(Mutual exclusion) 한 번에 하나의 프로세스만 해당 자원을 사용할 수 있다. 점유 대기(Hold and wait) 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 기다린다. 비선점(non-preemptive) 다른 프로세스의 사용이 끝날 때까지 자원을 빼앗을 수 없다. 순환 대기(Circular wait) 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. 데드락의 관리 방법 1. 예방 : 발생조건의 제거 상호 배제(Mutual exclusion) 제거 한 번에 여러 프로세스가 공유 자원을 사용할 수 있도록 변경한다 - .. 2021. 12. 30. [OS] 7장 메모리 관리 7장, 메모리 관리 메모리는 주소를 통해 접근하는데, 메모리 주소는 이진수로 매겨진다. 컴퓨터는 바이트(byte) 단위로 메모리 주소를 부여한다. 메모리 주소는 계층적으로 관리하는데, 보통 4KB(12비트) 단위로 묶어 페이지(page)를 만들어 사용한다. 프로세스는 실행을 위해 메모리에 적재될 때 프로세스를 위한 독자적인 주소 공간이 형성된다. 이 주소를 논리적 주소(logical address) 혹은 가상 주소(virtual address)라고 한다. 각 프로세스에 독립적으로 할당된 논리적 주소는, 0번지부터 시작한다. 물리적 주소(physical address)는 물리적 메모리에 실제로 올라가는 위치를 말한다. 보통 물리적 메모리의 낮은 주소 영역에는 운영체제가, 높은 주소 영역에는 사용자 프로세스.. 2021. 12. 28. [OS] 6장 CPU 스케줄링 6장, CPU 스케줄링 CPU? 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치 프로그램 카운터(Program Counter : PC)? 현재 수행할 코드의 메모리 주소 값을 가지고 있는 레지스터 기계어 명령의 종류 CPU 내에서 수행되는 명령 - 수행 속도가 매우 빠름 - 일반명령 - ex) Add 메모리 접근을 필요로 하는 명령 - CPU 내에서 수행되는 명령보다는 느리지만 비교적 빠른 속도 - 일반명령 - ex) Load, Store 입출력을 동반하는 명령 - 매우 긴 수행 시간 - 특권 명령 프로그램의 수행 단계 CPU 버스트(burst) 사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 일련의 단계 I/O 버스트(burst) I/O 요청이 발생해 커널에 의해 입출력 작업을 진행.. 2021. 12. 28. [OS] 5장 프로세스 관리 5장, 프로세스 관리 프로세스(process)란 실행중인 프로그램(program in execution)을 뜻한다. 시분할방식으로 여러 프로그램이 CPU를 나눠쓰는데, 다시 자기 차례가 왔을 때 '어떤 명령까지 수행했는지'에 대한 정보가 필요하다. 이를 담고 있는 것이 프로세스 문맥(context)이다. 프로세스 문맥 프로세스의 주소 공간(코드, 데이터, 스택 상태) 레지스터에 어떤 값을 가지고 있었는지 시스템 콜 등을 통해 커널에서 수행한 일의 상태 프로세스에 관해 커널이 관리하고 있는 각종 정보 하드웨어 문맥 : CPU의 수행 상태. 프로그램 카운터, 각종 레지스터 저장값 프로세스의 주소 공간 : 코드, 데이터, 스택 주소 커널상의 문맥 : PCB와 커널스택 프로세스의 상태 - 실행(running) .. 2021. 12. 22. [OS] 4장 프로그램의 구조와 실행 4장, 프로그램의 구조와 실행 프로그램의 주소 영역 코드(code) : 프로그램 코드가 기계어 명령(machine instruction) 형태로 변환되어 저장되는 부분 데이터(data) : 프로그램이 사용하는 데이터를 저장하는 부분 스택(stack) : 함수의 수행을 마치고 복귀하는 주소 및 데이터를 임시로 저장하기 위해 사용되는 부분 일반적으로 프로그램에서 발생되는 함수호출에 필요한 복귀주소는 각 프로그램의 주소공간-스택영역에 보관하고, 인터럽트로 CPU를 빼앗긴 위치는 프로세스제어블록(PCB)에 저장된다. CPU는 빠른 속도의 계산 능력은 가지고 있지만, 어떤 작업을 수행할지 결정하는 능력은 없다. 때문에 CPU가 다음으로 수행해야하는 메모리 주소를 담고 있는 레지스터-프로그램 카운터(Program .. 2021. 12. 22. 이전 1 ··· 3 4 5 6 7 8 다음 반응형