본문 바로가기

ComputerScience/OperatingSystem6

[OS] 6. 가상메모리 1. 가상메모리 다중 프로그래밍을 실현하기 위해서는 다수의 프로세스들이 메모리 위에 올라와 있어야 한다. 하지만 메모리의 용량은 한정되어있고, 다중프로그래밍을 하려면 메모리 용량이 부족하기 마련이다. 가상메모리는 이런상황을 대비해 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 이 기법의 장점 중 하나는 사용자 프로그램이 물리 메모리보다 커져도 된다는 점이다. 가상메모리는 사용자 관점의 논리 메모리와 물리 메모리의를 분리시켜 주 메모리를 균일한 크기의 저장공간으로 구성된 엄청나게 큰 배열로 추상화 시켜준다. 이번 포스팅에는 가상메모리를 구현하는 요구페이징에 대해서 알아보는 시간을 갖겠다. - 가상메모리의 필요성 잘 발생하지 않는(거의 실행하지 않는) 오류 상황을 처리하는 .. 2021. 5. 24.
[OS] 5. 동기화(세마포, 뮤텍스) ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 동기화 1) 경쟁상황( race condition ) 여러개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 말한다. 이런 경우에 동일한 자료에 대한 접근을 제한하여 접근 순서에 관계없이 항상 일관적인 결과를 도출 할 수 있도록 해야한다. 이렇게 같은 자원에 대해서 한번에 한 프로세스 혹은 쓰레드만 작업을 허용하는 것을 동기화라고 한다. 2) 임계구역(Critical Section) 공유자원이 접근하는 코드를 말한다. 각 프로세스 또는 쓰레드가 공유자원에 값을 변경하는 코드의 영역.. 2021. 5. 22.
[OS] 4. 메인 메모리 ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 스와핑(Swapping) 프로세스 실행 중 임시로 메인메모리에 있던 프로세스를 보조메모리로 보냈다가 다시 되돌리는 경우가 있다. 예를 들어 RoundRobin 스케줄링의 경우 CPU할당 시간이 끝나면 주 메모리 관리기가 이 프로세스를 보조 메모리로 보내고 다른 프로세스를 메모리로 불러 들일 수 있다. 즉, 스왑 시킬 수 있다. 대략적인 개념은 위와같이 CPU 버스트 시간을 모두 사용한 프로세스를 메인메모리에서 내려 보조메모리에 저장하고 다음 프로세스를 올리는 작업을 말한다. 보조메모리에 접근하는 것 자체가 많은 시간이 필요하기 때문에 메.. 2021. 5. 20.
[OS] 3. 메모리 ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 메모리 계층 메모리 계층은 다음과 같다. 위 피라미드를 크게 3부분으로 구분할 수 있다. 상위계층일 수록 CPU의 접근시간이 빠르며 용량이 작은 반면 하위계층일 수록 용량은 크지만 CPU의접근시간이 길어진다. 레지스터, 캐시 - CPU 내에 존재하여 CPU가 빠르게 접근할 수 있다. 메인 메모리 - CPU 메모리 외부에 존재하여 레지스터와 캐시보다 접근이 느리다. 하드디스크 - CPU가 직접 접근할 방법도 없다. CPU가 하드에 접근하기 위해서는 메인메모리로 데이터를 옮긴 후에 메인메모리를 통해 접근해야 한다. - 계층 구조의 필요성 비.. 2021. 5. 20.
[OS] 2. 교착상태(DeadLock) ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 교착상태(DeadLock) 교착상태는 상호배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 무한정 기다리는 현상을 말합니다. 그림으로 표현하면 위와 같습니다. 이와 같이 교착상태가 발생되는 조건은 다음과 같은 4가지가 있습니다. 상호배제 한 자원은 하나의 프로세스에서만 사용이됩니다.(한 자원이 2개의 프로세스에서 사용될 수 없음) 점유대기 프로세스A는 자원1을, 프로세스B는 자원2를, 프로세스C는 자원 3을 각각 소유하고 있으면서 다른 자원을 사용하기 위해 대기하고.. 2021. 5. 19.
[OS] 1. 운영체제, 프로세스(Process), 쓰레드(Thread) ※본 포스팅은 공부목적(https://develaniper-devpage.tistory.com/77)에 따라 해당 블로그와 깃허브를 참조하여 제작된 포스팅 입니다. 1. 운영체제 운영체는 시스템의 자원과 동작을 관리하는 소프트웨어입니다. 운영체제는 다음과 같은 일을 합니다. 1. 프로세스 관리, 2. 저장장치 관리, 3. 네트워킹, 4. 사용자 관리, 5. 디바이스 드라이버 이 다섯가지 일들에 대해서 차근차근 공부해 봅시다!! 2. 프로세스 & 쓰레드 1) 프로세스(Process), 쓰레드(Thread)란? - 프로세스 : 메모리 상에서 실행중인 프로그램(작업) - 쓰레드 : 프로세스 안에서 실행되는 여러 흐름의 단위 그냥 당연하다고 생각하던 프로세스가 여기서 확인 할 수 있습니다. 이건 테크톡이라는 유.. 2021. 5. 17.