본문 바로가기

OS8

[OS] 가상메모리(Virtual Memory) 가상 메모리(Virtual Memory) 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안된 메모리 기법이다. 프로그램에서 코드와 데이터는 실행되기 위해서 메모리에 존재하지만, 모든 프로그램이 항상 사용되는 것은 아니다. ex) Error Code, unusual routines, large data structures 프로그램을 부분적으로 실행할 수 있다면 다음과 같은 장점이 있다. 프로그램은 더 이상 물리적 메모리의 한계에 제약받지 않는다. 각각의 프로그램들은 실행 중에 적은 크기의 메모리를 가진다. 프로그램을 메모리에 올리고 스왑 하는 데 필요한 I/O가 적어진다. 가상 메모리는 한정된.. 2023. 10. 18.
[OS] 메인 메모리(Main Memory) Base and Limit Registers base register와 limit register쌍은 논리 주소 공간을 정의한다. CPU는 사용자 모드에서 생성되는 모든 메모리 접근이 해당 사용자의 base와 limit의 사이에 있는지 확인한다. 논리 주소 공간 vs 물리 주소 공간 논리 주소 : CPU에 의해 생성된 주소이고, 가상 주소라고도 불린다. 물리 주소 : 메모리 장치에서 실제 보이는 주소 논리 주소 공간 : 프로그램에 의해 생성된 논리 주소의 집합 물리 주소 공간 : 프로그램에 의해 생성된 물리 주소의 집합 스와핑(Swapping) 스와핑은 메모리 공간이 부족할 경우 일시적으로 수행 중인 프로세스를 디스크로 이동시키고 그 자리에 새로운 프로세스를 동작시키는 것이다. 물리적인 메모리 공간은 한.. 2023. 10. 12.
[OS] 교착상태(Deadlock) deadlock deadlock이란 프로세스가 자원을 얻지 못하고 상대방의 자원을 요구하면서 기다리는 상태를 의미한다. 모든 프로세스가 자원을 대기하고 있고, 어느 프로세스도 자원을 제공하려고 하지 않을 때 일어난다. 예를 들어 semaphore 간에 deadlock은 다음과 같이 일어날 수 있다 deadlock의 발생 조건 상호 배제(Mutual Exclusion) : 하나의 프로세스는 한 번에 하나의 자원을 사용한다. 비선점(No preemtion) : 한번 자원을 얻으면 중간에 방출되지 않는다. 점유 대기(Hold and Wait) : 최소 하나의 자원을 점유하고 있는 프로세스는 다른 프로세스가 점유하고 있는 다른 자원을 얻기 위해 대기해야 한다. 순환 대기(Circular Wait) : 프로세스들.. 2023. 10. 4.
[OS] 프로세스 동기화 임계 구역 문제(Critical Section Problem) n개의 프로세스가 있는 시스템에서 각 프로세스는 임계구역이라 불리는 코드의 일부를 가지고 있다. 한 프로세스가 임계 구역에 들어가면, 다른 프로세스는 아무도 임계구역에 들어갈 수 없다. 각 프로세스는 임계 구역에 들어가기 위해 entry section이라는 코드 부분에서 허가를 받아야 하고, 임계 구역 실행이 끝난 프로세스는 exit section을 지나 다른 프로세스들이 임계구역에 들어갈 수 있게 된다. 임계 구역 문제를 해결하기 위해서는 3가지 조건이 만족해야 한다. 상호 배제(Mutual Exclusion) : 만약 프로세스가 임계 구역에서 실행 중이라면 다른 모든 프로세스는 임계 구역에서 실행할 수 없다. 진행(Progress) : 만.. 2023. 9. 27.
[OS] CPU 스케줄링(CPU Scheduling) CPU 스케줄링의 필요성 프로세스는 CPU burst와 I/O burst 두 가지 상태로 순환하면서 작동한다. CPU burst : CPU 명령을 실행하는 것 I/O burst : I/O 입력을 대기하는 것 참고로 CPU burst가 큰 프로세스를 CPU bound process, I/O burst가 큰 프로세스를 I/O bound process라 한다. 프로세스는 위 사이클처럼 CPU burst와 I/O burst로 상태를 바꾸면서 동작하게 된다. 하지만 대부분의 프로세스는 CPU burst보다 I/O burst가 큰 I/O bound process이다. I/O burst 상태인 프로세스는 사용자의 입력이 있을 때까지 대기하기 때문에 CPU는 그동안 다른 일을 할 수 없게 된다. 이때 CPU를 할당하고.. 2023. 9. 20.
[OS] 스레드(Threads) 스레드(Threads) Threads란 프로세스 내에서 실행되는 흐름의 단위이다. 하나의 프로세스에 Threads가 하나 있으면 single-threaded process이고 여러 개 있는 경우 multi-threaded process라 한다. 이때 하나의 프로세스에 있는 Threads들은 code, data, files을 서로 공유한다. 멀티스레드의 장점 응답성(Responsiveness) 만약 유저 인터페이스 같이 중요한 곳에 프로세스의 일부가 block 되어도 실행을 계속할 수 있다. 하나의 스레드가 block 되어도 다른 스레드가 여전히 실행되어 사용자들에게 output을 제공할 수 있다. 자원 공유(Resource sharing 스레드는 공유 메모리와 메시지 전달 방식보다 더 쉽게 프로세스의 자.. 2023. 9. 14.