
가상 머신 : 하나의 하드웨어(CPU, Memory 등)에 다수의 운영체제를 설치하고, 개별 컴퓨터처럼 동작하도록 하는 프로그램 Virtual Machine Type1 (native 또는 bare metal) - 하이퍼 바이저(또는 VMM): 운영 체제와 응용프로그램을 물리적 하드웨어에서 분리하는 프로세스 - 하이퍼바이저 또는 버추얼 머신 모니터(VMM)라고 하는 소프트웨어가 Hardware에서 직접 구동 ex. Xen, KVM Virtual Machine Type2 - 하이퍼바이저 또는 버추얼 머신 모니터 (VMM)라고 하는 소프트웨어가 Host OS 상위에 설치 ex. VMWare, Parallels Desktop(Mac) 전 가상화 / 반 가상화 전가상화 : 각 가상머신이 하이퍼바이저를 통해서 하드..

Boot 컴퓨터를 켜서 동작시키는 절차 Boot 프로그램 : 운영체제 커널을 Storage 에서 특정 주소의 물리 메모리에 복사하고 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램 부팅 과정 컴퓨터를 키면 BIOS 가 특정 Storage 읽어와 bootstrap loader 를 메모리에 올리고 실행함. bootstrap loader 프로그램이 있는 곳을 찾아와서 실행시킴 → BIOS 에 CPU가 접근, BIOS 코드를 메모리에 올린다. BIOS 코드가 하는 역활은 부트 로더 로드 프로그램과 함께 MBR 파티션 테이블 정보를 메모리에 올린다. → 부트 로더 코드는 메인파티션에 들어 있는 부트섹터에 가서 부트 코드 로드 → 부트 코드실행되면 해당 메인 파티션에 있는 운영체제 이미지를 로드 → 운영체제 실..

파일 시스템 운영체제가 저장메체에 파일을 쓰기 위한 자료구조 또는 알고리즘 파일 시스템이 만들어진 이유(블록) - 0과 1의 데이터를 어떻게 저장매체이 저장할까? ① 비트로 관리하기는 오버헤드가 너무 큼 ② 블록 단위로 관리하기로 함(보통 4KB) ③ 블록마다 고유 번호를 부여해 관리 파일 시스템이 만들어진 이유(파일) - 사용자가 각 블록 고유 번호를 관리하기 어려움 : 추상적(논리적) 객체 필요 : 파일 - 사용자는 파일단위로 관리 : 각 파일에는 블록 단위로 관리 파일 시스템이 만들어진 이유(저장 방법) - 저장매체에 효율적으로 파일을 저장하는 방법 가능한 연속적인 공간에 파일을 저장하는 것이 좋음 외부 단편화, 파일 사이즈 변경 문제로 불연속 공간에 파일 저장 기능 지원 필요 블록 체인: 블록을 ..

페이지 교체 정책 (page replacement policy) 운영체제가 특정 페이지를 물리 메모리에 올리려 하는데, 물리 메모리가 다 차있는 경우 기존 페이지 중 하나를 물리 메모리에서 저장 매체로 내리고(저장) 새로운 페이지를 해당 물리 메모리 공간에 올린다. 1) 최적 페이지 교체 알고리즘 (OPT, OPTimal Replacement Algorithm) : 앞으로 가장 오랫동안 사용하지 않을 페이지를 내리자! OS 에서는 구현 불가능 2) LRU(Least Recently Used) 페이지 교체 알고리즘 가장 오래 전에 사용된 페이지 교체, OPT 교체 알고리즘이 구현 불가능하므로 과거 기록을 기반으로 시도 3) LFU(Least Recently Used) 페이지 교체 알고리즘 가장 적게 사용된..

페이징 시스템 (paging system) 가상 메모리는 하나의 프로세스에서 특정 시간동안 쓰는 영역은 일부분이므로 일부분만 메모리에 올려놓자. 어느 정도 크기만큼 메모리에 올려야 될까? → 페이징 이라는 단위로 페이징 개념 - 크키가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리 - 하드웨어 지원이 필요 - 리눅스에서 4KB로 paging - 페이지 번호를 기반으로 가상 주소와 물리주소간 매핑 정보가 있음 페이징 시스템 구조 - page 또는 page frame : 고정된 크기의 block (4KB) - paging system 가상 주소 v = (p,d) p : 가상 메모리 페이지 d : p 안에서 참조하는 위치(변위) - 페이지 크기가 4KB 예 1) 가상 주소의 0비트에서..

가상 메모리(Virtual Memory System) 개념 - 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있음 EX. 리눅스는 하나의 프로세스가 4GB, 통상 메모리는 8GB, 16GB - 폰노미만 구조 기반이므로 코드는 메모리에 반드시 있어야 한다. 가상 메모리가 필요한 이유 - 하나의 프로세스만 실행 가능한 시스템(배치 처리 시스템 등) 1. 프로그램을 메모리로 로드(load) 2. 프로세스 실행 3. 프로세스 종료(메모리 해제) - 여러 프로세스 동시 실행 시스템 1. 메모리 용량 부족 이슈 2. 프로세스 메모리 영역간에 침범 이슈 가상 메모리 - 가상 메모리: 메모리가 실제 메모리보다 많아 보이게 하는 기술 실제 사용하는 메모리는 작다는 점에 착안해서 고안된 기술 프로..

동기화(Synchronization) 이슈 동기화 : 작업들 사이에 실행 시기를 맞추는 것 여러 스레드가 동일한 자원(데이터) 접근시 동기화 이슈 발생 ex. 프로세스 안에 스레드 여러개, 스레드들은 모픈 프로세스에 있는 데이터 공유 스레드 A가 데이터값을 바꾸고 다른 스레드들이 읽을 수 있다. 스레드들은 실행 순서는 정해져 있지 않고 스케줄러가 그에 맞춰 정해지게 된다. 순서가 정해져 있지 않다보니 비정상 동작을 하게 된다. → 동기화 이슈라고 한다. (Synchronization) 동기화 이슈는 관리(스레드 관리)가 필요하다. 디버깅하기 쉽지 않다. 동기화(Synchronization) 이슈 해결 방안 - 동기화 간에 실행 시기를 맞춰야 한다. - Mutual exclusion (상호 배제) - 쓰레..

Thread 개념 프로세스는 프로세스 간에 각 프로세스의 데이트 접근 불가해서 IPC를 사용했어야 했다. 스레드는 하나의 프로세스에 여러개의 스레드 생성가능 ( 다른 프로세스에서 스레드끼리는 공유x ) 스레드들은 동시에 실행가능. 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능해서 IPC 사용 x - Thread는 각기 실행이 가능한 stack 존재 스레드는 stack영역을 가지고 있는 함수라고 생각하면 된다. 각 스레드를 위한 stack 공간을 별도로 생성, 스레드 별로 PC 레지스터도 따로 존재한다. stack 영역을 제외한 영역은 공유 Multi Thread Code, Data, Heap 영역은 공유 스레드를 위한 stack 영역만 별도로 가지고 있다. 멀티 프로세싱과 Thread 멀티..