본문 바로가기

반응형

컴퓨터공학/운영체제

(12)
가상머신 가상머신 : 별도의 장치를 구현하여 한 대의 컴퓨터에 여러 대의 PC가 동작하도록 하는 방식 가상머신 구분 하이퍼바이저, 가상머신모니터(VMM) : 운영체제와 응용프로그램을 하드웨어와 분리하는 프로세스 Type1(native or bare-metal) : 하이퍼바이저, VMM이라는 소프트웨어가 하드웨어에 직접 구동 (대표적인 예 KVM -> AWS(아마존 클라우드 컴퓨팅 서비스에서 사용하는 방식)) * 하드웨어를 직접 엑세스 하기 때문에 가상 성능이 좋다 Type2 : 하이퍼바이저, VMM가 운영체제 위에서 구동 (대표적인 예 VMware) VMware의 경우 리눅스에서 커널의 공간을 생성하여 동작하는 방식 전가상화 : 각 가상머신이 하이퍼바이저를 통해서 하드웨어간의 통신. 하이퍼바이저가 마치 하드웨어인..
부트 부트란 컴퓨터를 실행시키는 동작이며 이 동작이 어떻게 되는지 알아보자 CPU는 부팅이 되면 ROM-BOOT 로 접근하게 된다. ROM-BOOT는 꺼져도 데이터가 저장되는 특별한 형태의 RAM이라고 생각하면 된다. CPU가 접근하면 ROM-BOOT는 RAM으로 BIOS 코드를 로드 시킨다. RAM은 저장소의 MBR 접근하여 BOOT 로더를 로드하고 파티션 정보(C,D 드라이브 중 운영체제가 어디있는지 등)의 정보를 읽어온다. 이후 부트섹터에서 BOOT 코드를 로드하고 마지막으로 커널이미지를 로드하게 된다.
inode 방식과 파일시스템 inode 구조 1. 슈퍼 블록 : 파일 시스템 정보 2. inode 블록 : 파일 상세 정보 3. 데이터 블록 : 실제 데이터 inode 블록(마치 프로세스의 PCB와 유사하다)은 소유자정보, 모드, 데이터 블록, 타임스탬프 등을 담고 있으며 메타 데이터 파일 형식으로 되어 있고 파일이름으로 inode 번호를 매칭하게 된다. 파일 시스템에서는 inode를 기반으로 파일을 엑세스하게 된다. Data Block은 각 데이터(1~4KB) 의 주소를 가지고 있으며 최대 12개 x 4KB 까지 연결할 수 있다 Indirect Blocks는 4MB / 4Byte = 1024개의 주소를 가질 수 있고, Double Indirect는 1024 x 1024 x 4KB 약 4GB를 담을 수 있고, Triple은 1024..
파일시스템 파일시스템이 생겨난 이유는 초기에는 비트로 파일을 저장하고 했지만 그게 많아지다 보니 불편해졌고 파일 단위별(4KB)로 나눠서 관리하게 되었다. 그러나 파일이 많아질수록 사용자가 불편해졌고 이에 따라 파일시스템 방법들이 도입됬다. 파일을 저장하기 위해 효율적인 방법은 파일을 저장매체에 그대로 저장하게 되면 일련적인 공간이 겹치는 부분이 있다(외부적 단편화) 가능한 연속적인 공간에 파일을 저장하는것이 좋기때문에 이를 위해 블록체인(링크드 리스트처럼 연결하여 파일을 잇는 방법 허나, 해당 주소를 찾기 위해서 처음부터 찾아야 한다) , 인덱스 기법(파일에 대한 주소를 인덱스에 기록해두는 방법)이 고안됬다. 윈도우의 경우 : FAT, FAT32, NTFS - 블록 위치를 FAT라는 자료구조에 기록 리눅스 : e..
세그먼트 가상 메모리를 실제 메모리로 할당하기 위한 두가지 방법이 있는데 하나는 페이징 기법, 나머지 하나가 세그먼트 기법이다. 세그먼트 기법은 페이징 기법과 다르게 논리적인 단위로 끊는 방식이다. 페이징 기법은 4KB 를 끊어서 했다면 세그먼트는 의미를 가지는 단위별로 끊는 방식이다. 세그먼트는 CS(Code Segment), SS(Stack Segment), DS(Data Segement), ES(Extra Segment)로 나눠서 관리한다. 예로는 부팅 시 프로그램을 간단히 가지기 위해 세그먼트로 나누고 있다. 세그먼트도 페이지 기법과 유사하게 실제 메모리 접근을 하는 방법은 세그먼트 번호, 세그먼트 변위를 두고 해당 테이블에 접근하여 실제 메모리로 접근하는 것이다. 페이지기법은 4KB 단위로 자르다보니 딱..
페이지교체 알고리즘 여러 개의 프로세스가 메모리에 각각 할당되고 나면 페이지 폴트나 다른 처리등을 통해 페이지를 valid -> invalid로 바꿔줘야 된다. 이런 처리를 하는 것을 페이지교체 페이지 교체는 가장 이상적으로 OPT(Optimal Replacement)페이지 기법이 있는데 이것은 나중에 사용되지 않은 페이지를 교체하는 방식인데 이것은 일반적인 운영체제에서는 불가하다 왜냐하면 나중에 어떤 동작을 할지 모르기 때문에 그래서 이것을 대체하기 위해 나온방식이 LRU(Least Recently Used) : 가장 오랫동안 사용되지 않았던 페이지를 교체하는 방식 LFU(Least Frequency Used) : 가장 사용하지 않았던 페이지를 교체하는 방식 NUR(Not Used Recently) : 참조,수정 (0,0..
페이지폴트 프로세스가 모든 코드나 데이터를 다 메모리에 올려두지 않고 필요하거나 쓰는것만 올려두게 된다. 그러다보니 필요할 때 메모리를 올리는 기술이 필요한데 그것이 페이지 폴트이다. 다시 말해서, 어떤 페이지가 실제 메모리에 없을 때, 일어나는 인터럽트 CPU가 요청한 가상주소 Page Table에 해당 내용이 invalid 되어 있으면 page fault 인터럽트를 발생하고 하드에서 페이지를 찾아서 update 시켜준 뒤, 다시 cpu가 가상주소를 MMU를 요청하는 순서로 실행하게 된다. OS에서는 페이지 폴트가 인터럽트이기 때문에 이전에서 배운것처럼 커널모드로 변경 후 IDT에서 커널함수를 호출하여 실행한다. 이처럼 페이지폴트가 자주 일어나게 되면 실행속도가 느려지게 된다. 예전 컴퓨터에 여러 개의 프로그램을..
다중페이징시스템 다중페이지시스템이란 ? 프로세스마다 페이지를 나누어서 메모리에 할당하게 되면 많은 공간이 낭비하게 된다 가령 실제 프로그램은 10KB 밖에 안되는데 4GB를 다 4KB로 나눌 필요가 없다. 고로 필요한 부분만 페이지를 나눠서 할당하게 되면 공간의 활용을 높일 수 있다. 이를 통해 페이지를 단계별로 나누어 페이지 디렉토리 개념을 써서 필요한 부분만 쓰는 방법 요약 : 모든 부분을 페이지로 나눌 필요 없이 단계적으로 나누어서 필요한 부분만 페이지로 나누어서 페이지 테이블에 두고 이것을 페이지 디렉터리에 저장해둔다. 기존 페이지는 32bit(4KB) 0~11bit : 변위 , 12~31bit : 페이지 번호로 썼지만, 0~11bit : 변위, 12~21bit : 페이지 번호, 22~31bit : 페이지 디렉터..

반응형