본문 바로가기

전체 글52

운영체제 - 페이징 시스템 (Paging System) 페이징 시스템 (Paging System) 페이징이란 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭되는 물리 주소 공간을 분리하는 것이다. 페이지 번호를 기반으로 가상 주소/ 물리 주소 매핑 정보를 기록/ 사용 한다. 하드웨어의 지원이 필요하며 인텔 x86 시스템에서는 4KB,2MB,1GB로 페이징을 지원하며, 리눅스의 경우 4KB로 페이징한다. 페이징 시스템 동작 원리 프로세스(4GB)의 PCB에는 Page Table 구조체를 가리키는 주소가 들어 있다. 이 Page Table에는 가상 주소와 물리 주소간 매핑 정보가 들어 있다. 페이지 또는 페이지 프레임은 4kb로 고정된 크기의 block이다. 페이지 시스템에는 하나의 공식같은 것이 있는데 가상 주소 v = (p,d) 라는 공식이다. p는 가상.. 2022. 12. 7.
운영체제 - 가상 메모리 (Virtual Memory) 가상 메모리 (Virtual Memory) 실제 각 프로세스마다 충분한 메모리를 할당하기엔 메모리 크기에 한계가 있다. 하나의 프로세스만 실행 가능한 프로그램은 프로그램이 끝날 때 까지 다른 프로그램이 기다려야 하고 프로세스의 주소 공간보다 메모리가 커야 한다는 한계가 있었고, 여러 프로세스를 동시에 실행하는 프로그램은 메모리의 용량이 부족한 이슈가 있었다. 이러한 한계를 극복하고자 가상 메모리 기법이 등장했다. 가상 메모리 기법은 메모리가 실제 메모리보다 더 많아보이게 하는 기법으로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하게 하는 기법이다. 프로세스간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있다. 가상 메모리의 기본 아이디어는 .. 2022. 12. 7.
운영체제 - 스레드 (Thread) 스레드 (Thread) 스레드는 프로세스 내에서 실제로 작업을 수행하는 주체를 의미하며 모든 프로세스는 반드시 하나 이상의 스레드가 존재한다. 때문에 Light Weight Process 라고 부르기도 한다. 스레드는 하나의 프로세스에 여러개의 스레드를 생성할 수 있고, 스레드들은 동시에 실행이 가능하다 또한 프로세스 내에 있기 때문에 프로세스의 모든 데이터를 접근할 수 있다. 스레드에는 각기 실행 가능한 stack이 존재한다. 멀티 스레드는 소프트웨어 병행 작업 처리를 위해 사용한다. A 스레드, B 스레드가 있으면 각 각의 스레드 스택 만 다르고 Code, Data, Heap 영역은 부모 프로세스의 영역을 공유한다. 요즘은 프로그램을 개발할 때 짧은 반응 시간이 우선이기 때문에, 성능 개선에 신경을 .. 2022. 12. 7.
운영체제 - 프로세스 구조 프로세스 구조 프로세스는 일반적으로 다음과 같은 구조를 가진다. text(code) : 프로그래밍 코드를 담는 공간 data : 변수/초기화된 데이터를 담는 공간 stack : 임시 데이터(함수 호출, 로컬 변수 등)을 담는 공간 heap : 코드에서 동적으로 만들어지는 데이터를 담는 공간 Q. 구조를 잘 살펴보면 스택과 힙 사이의 공간은 비어져 있고 데이터를 저장하며 공간을 채워나가게 끔 되어 있다. 그럼 만약 재귀함수 호출이 엄청나게 많이 호출이 되면 어떻게 될까? A. 재귀함수 호출로 인해 stack에 굉장히 많은 데이터가 쌓이게 되고 더 이상 저장할 수 없게 되면 에러가 나게 된다. 함수호출 뿐만 아니라 객체 생성도 마찬가지다. 객체를 굉장히 많이 생성하게 되면 결국 heap이 데이터를 감당하지 .. 2022. 12. 7.
운영체제 - 프로세스 스케줄러 스케줄러 프로세스의 실행은 목표에 따라 스케줄러가 담당한다. 예를 들어 프로세스 응답 시간을 짧게 가져가고 싶은 경우엔 시분할 시스템을, CPU 활용도를 최대로 높혀 프로세스를 빨리 실행하고 싶은 경우엔 멀티 프로그래밍을 사용한다. 이번 글에서는 다양한 스케줄러 기법에 대해 정리해보았다. FIFO 스케줄링 FIFO 스케줄링은 먼저 들어온 프로세스를 먼저 실행 시키는 알고리즘이다. 가장 간단한 스케쥴러이며 배치 처리 시스템이라 불리기도 한다. 프로세스가 저장매체를 읽는다던지, 프린팅을 한다던지 하는 작업 없이 처음부터 끝까지 쭉 CPU를 사용한다. 최단 작업 우선(Shortest Job First) 스케줄링 최단 작업 우선 스케줄링은 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행 시키는 알고리즘이다.. 2022. 12. 5.
운영체제 - 프로세스(Process)란? 프로세스(Process) 프로세스는 메모리에 올려져서 실행이 되고 있는 프로그램을 말합니다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 됩니다. 그럼 이때부터 프로세스라 부르게 됩니다. 그렇다면 응용프로그램은 프로세스와 같은 말일까요? 다릅니다. 응용 프로그램은 여러 프로세스로 구성이 가능하기 때문입니다. 프로세스 스케줄링 하나의 CPU가 여러개의 프로세스를 실행 시키기 위해서는 프로세스 스케줄링 기술이 필요합니다. 1. 배치 처리 시스템 배치 처리 시스템은 여러개의 프로그램을 순차적으로 실행시키는 스케줄링 기법입니다. 먼저 등록된 프로세스보다 뒤에 등록된 프로세스가 더 적은 시간이 걸리더라도 앞의 프로세스가 끝날 때 까.. 2022. 12. 5.