본문 바로가기

분류 전체보기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.