분류 전체보기 19

가상 메모리

가상 메모리에 대해 설명해주세요. 프로그램의 크기가 물리 메모리보다 큰 경우에 사용합니다. 전체 중에서 사용할 부분만 적재하는 방식입니다. 프로그램이 필요한 전체 메모리를 가상메모리로 바라보고, 이 중에서 현재 실행에 필요한 부분만 물리적 메모리에 올리게 됩니다. 가상 메모리의 장점을 무엇이라고 생각하시나요?? 메모리를 프로그램의 관점(논리적 관점)과 물리적 관점으로 분리할 수 있습니다. 메인메모리보다 큰 프로그램 실행이 가능합니다. 절대 실행되지 않는 코드는 적재되지 않습니다. 각 프로세스에 필요한 데이터만 적재하므로, 메모리 용량 절약이 가능합니다. 더욱 많은 프로세스를 적재할 수 있으므로 다중 프로그래밍 정도, CPU 사용률, 처리량도 높아집니다. 프로세스의 용량이 가벼워지므로 swapping과 f..

운영체제 2021.08.14

메모리 할당(3)

세그먼테이션이 무엇인가요?? 프로그램은 프로그래머가 작성한 명령어, 전역에서 사용한 공유 데이터, 작성된 프로그래밍 언어에서 제공하는 표준 라이브러리로 구성되어 있습니다. 페이징은 이러한 프로그램 구성요소들의 특징을 중요하게 생각하지 않으므로, 함수의 코드가 서로 다른 페이지로 분리 되는 불상사가 일어날 수 있습니다. 즉, 함수를 실행하려면 그 함수의 구성하고 있는 모든 페이지를 적재해야 합니다. 세그먼트는 서로 크기가 다른 논리적 단위인 세그먼트로 분할하고 메모리를 할당하는 기법입니다. 세그먼트 테이블 아시나요?? 페이지와 마찬가지로 프로세스는 세그먼트 테이블을 유지합니다. 각 세그먼트는 세그먼트의 시작지점인 base와 limit인 세그먼트의 크기, read/write flag인 읽기전용 여부가 있습니..

운영체제 2021.08.14

메모리 할당(2)

페이징이 무엇인가요?? 프로세스의 물리적 주소 공간을 비연속적으로 하는 것입니다. 연속 메모리 할당의 외부 단편화문제와 외부 단편화를 해결하기 위한 압축의 큰 오버헤드를 해결할 수 있습니다. 물리적인 메모리를 고정된 사이즈(프레임)으로 쪼개서 사용합니다. 논리적 메모리에서도 같은 크기로(페이지)로 쪼개서 사용합니다. 페이지 번호와 프레임 번호를 매핑시켜 사용할 수 있습니다. 어떻게 매핑이 되나요?? CPU는 페이지 번호와 페이지 오프셋을 이용하여 물리적 메모리에 접근할 수 있습니다. 페이지 번호는 프로세스 마다의 페이지 테이블의 인덱스를 사용합니다. 페이지 테이블을 이용하여 어떤 프레임에 있는지 찾아내어 오프셋을 더하여 물리적 메모리에 접근이 가능합니다. 페이지 테이블은 무엇으로 만든다고 생각하세요?? ..

운영체제 2021.08.13

메모리 할당(1)

연속 메모리 할당이 무엇인가요?? 연속 메모리 할당은 유저 프로세스를 메모리에 통채로 로드하는 것입니다.그래서 연속적이라고 할 수 있습니다. 자신의 프로세스 메모리 범위인지 확인하기 위해서 limit register와 relocation register을 통해 보호 가능합니다. 고정 할당과 가변 할당 방식이 존재합니다. 고정 할당은 고정적인 크기로 나누어서 그 곳에 맞게 할당하는 것이며, 가변 할당은 프로세스의 크게 맞게 할당하는 것입니다. 가변 할당은 어떤 프로세스를 어떻게 할당할 것인가라는 문제가 발생합니다. 프로세스를 사용하고 해제되면 해제된 공간 만큼이 남는 홀이 발생합니다. 홀에 어떤 프로세스를 놔주냐에 따라 성능에 차이가 있기 때문입니다. 홀이 무엇인가요?? 연속적으로 메모리를 할당해주면 프로..

운영체제 2021.08.13

주메모리의 관리

프로세스가 뭐죠?? 실행 중인 프로그램입니다. 프로그램이 메모리에 로드되어 있는 것입니다. 메모리는 어떻게 구성되어있는지 아시나요?? 메모리는 바이트 단위로 구성되어 있는 배열입니다. 메모리에는 주소가 있습니다. CPU는 PC가 지정하는 instruction을 fetch해서 실행합니다. instruction도 메모리에 load와 store을 합니다. 각각의 프로세스들은 분리된 메모리 공간을 가지고 있습니다. base rgister와 limit register을 가지고 허용된 범위의 주소를 제어할 수 있습니다. 주소 바인딩 어떻게 하는지 아시나요?? 프로그램은 디스크에 이진파일로 저장되어 있습니다. 실행 시키기 위해서, 프로그램을 메모리에 가지고 오면 드디어 프로세스가 되는 것입니다. 프로세스의 주소는 0..

운영체제 2021.08.13

데드락

데드락이 무엇인가요?? 데드락은 자원이 한정되어 있어서 상대방이 자원을 다 쓰고 돌려줄 때까지 기다리고 그걸 받아서 쓴다고 할 때, 그걸 서로가 기다려서 영원히 무한 기다림에 빠지는 것입니다. 즉 A, B가 있는데, A는 자원1, 자원2 순서대로하고 B는 자원2, 자원1 순서대로 하려고합니다. A는 자원1을 소지하고 있는 상태에서 자원2를 요청하고 B는 자원2을 소지하고 있는 상태에서 자원1을 필요로하는 상황에서 무한 기다림인 교착상태에 걸리게 됩니다. 우리가 일상생활에서 볼 수 있듯이 자동차가 여러 대가 방향이 꽉 막혀버린 상황에서 서로 양보하지 않고 무한정 대기하는 것입니다. P0이 A자원에 세마포어를 가진 상태에서 인터럽트가 걸립니다. context switching이 일어나고 P1은 B자원에 세마..

운영체제 2021.08.11

철학자들의 저녁식사 문제

철학자들의 저녁식사 문제가 무엇인가요?? 5명의 철학자들이 젓가락이 5개밖에 없어서 한 명의 철학자가 2개의 젓가락을 이용해야 식사를 할 수 있습니다. 동시에 젓가락을 잡으려고하면 생기는 문제에 대해 파악할 수 있습니다. 원형 테이블을 공유하며, 테이블 중앙에는 밥이 있습니다. 양 옆의 젓가락을 집을 경우 식사를 할 수 있으며, 식사를 마치면 젓가락을 2개를 모두 놓고 다시 생각합니다. 이 상황에서는 교착(Deadlock)과 기아(Starvation)이 생기게되지 않도록 하는 방법이 무엇이일까요?? 세마포어를 이용해하여 상호 배제를 막을 수 있습니다. 각 젓가락에 세마포어를 걸어주는 것입니다.젓가락을 잡을 때 wait()을 걸고 젓가락을 내려놓게 되면 signal()을 보내면 됩니다. 하지만, 이렇게 하..

운영체제 2021.08.11

모니터

Monitor가 무엇인지 아시나요?? 세마포어는 편리하고 효과적인 동기화입니다. 하지만, timing error가 발생하고 오류를 감지하기가 어렵습니다. 세마포에서 signal()하고 wait()를 하는 순서로하게 되면 임계구역에 계속 들어갈 수 있는 상황이 발생합니다. 이런 바보같은 일이 일어나지 않을 것 같지만 코드가 길어진다면 모릅니다. wait(), wait()을 하거나 여러가지 에러에 걸릴 것입니다. 세마포어나 뮤텍스를 잘못쓰면서 생기는 문제는 잘못쓰는 방법을 낮춰주는 것입니다. 그래서 모니터는 뮤텍스와 세마포어의 단점들을 극복한 동기화 도구입니다. 모니터는 상호 배제를 제공해주는 하나의 데이터 타입 혹은 클래스라고 생각하면됩니다. 모니터는 프로그래밍 언어 수준에서 제공되는 구성체이며, 상호배제..

운영체제 2021.08.10

뮤텍스와 세마포어

저번 글에선 소프트웨어 동기화 솔루션으로 피터슨 알고리즘을 배웠으며, 하드웨어로는 set_and_set, compare_and_swap인 하드웨어 instruction으로 atomic variable이 필요함을 배웠습니다. 복잡한 알고리즘인 아닌 high level에서의 소프트웨어 툴로 임계 영역 문제를 해결하는 뮤텍스와 세마포어를 정리해봅니다. Mutex가 무엇인지 아시나요?? 뮤텍스는 가장 단순한 동기화 도구입니다. 뮤텍스는 mutual exclusion입니다. race condition의 막고 임계영역을 보호할 수 있습니다. 임계영역에 들어가기 전에 락을 획득하고 임계영역에서 나올 때 락을 해제합니다. 접근 권한을 획득할 때까지 busy waiting상태에 머무르지 않고 sleep 상태로 들어가며 ..

운영체제 2021.08.10

동기화 문제 해결책(2)

임계영역 해결 조건이 무엇인가요?? 상호 배제가 보존되어야 합니다. 동시에 접근하지 않으려면 서로 배타적이어야 하기 때문입니다. 진행입니다. 임계영역에 어떤 프로세스의 접근이 없을 때 항상 접근이 가능해야 합니다. 무한정 대기가 없어야 합니다. 무한정 대기로 인해 기아현상이 발생할 수 있기 때문에 모든 프로세스가 임계 구역에 들어갈수 있도록 하기 위함입니다. 임계영역의 소프트웨어 해결책이 무엇이 있나요?? Dekker's 알고리즘이 있습니다. Eisenberg and McGuire's 알고리즘 있습니다. Bakery 알고리즘이 있습니다. Peterson's 알고리즘이 있습니다. 피터슨 알고리즘이 무엇인가요?? 임계 영역 문제를 해결한 소프트웨어 해결책입니다. 발표 당시에는 2개의 프로세스에 대해서만 적용..

운영체제 2021.08.09