운영체제

· 운영체제
개요 페이지 테이블은 각 프로세스마다 가지고 있으며 메모리내에 OS 가 관리할 수 있는 영역에 저장이됨 따라서 페이지 테이블의 크기를 줄이는 것은 중요함 PTE(Page Table Entry) 의 크기가 4Byte == 32bit 로 가정하고 각 페이지의 크기가 2^12 바이트일경우 2^32 / 2^12 개의 entry 가 존재할 수 있음 2^20 * 4KB == 4MB 페이지 테이블 크기를 줄일 수 있는 방법 페이지 크기를 늘린다. entry 의 개수가 줄어듬 내부 단편화 문제, 메모리 낭비 문제 발생 Segmentation 기법 사용 Code, Stack, Heap 세그멘트에 각각 페이지 테이블을 생성 segment를 위한 base, bound register 가 필요함 Context-Switch 시..
· 운영체제
개요 부모로부터 생성된 프로세스는 부모의 PCB를 복제된 상태로 가지고 있게 된다 이때 부모 상태가 종료 상태를 회수 할 수 있도록 최소한의 정보를 남겨둔다 (PID, 종료상태, 리눅스의 경우 커널에서 사용하는 구조체) 좀비 프로세스 (Zombie) 부모 프로세스가 wait() 시스템 콜을 호출해야지만 상태를 회수 할 수 있는데 wait() 을 하지 않고 뒤늦게 종료해버리면 최소한의 메모리 정보가 OS 위에 남아있는데 이를 좀비 프로세스라고 함 (프로세스 실행은 종료되었지만, 마치 살아있는것 처럼 보이는것 ) 최소한의 정보만 가지고 있어서 큰 성능 저하를 야기하지는 않지만, PID 를 차지하며 다른 프로세스의 실행을 방해하게 됨 예시코드) # include # include # include int ma..
· 운영체제
개요 여러개의 명령어를 동시에 실행할때 단일 프로세스의 인터럽트 혹은 여러 프로세스에서의 병행성문제 때문에 원자적으로 실행할 수 없음, 오퍼레이팅 시스템에서는 lock 을 이용하여 해당 문제를 해결하려고함 락 balance 변수를 갱신하는 간단한 코드 예시 lock_t mutex; ... lock(&mutex); balance = balance + 1; unlock(&mutex); 위의 코드에서는 임계 영역에서 정확히 하나의 쓰레드가 락을 획득하고 반환할 수 있음 lock() 루틴: 락 획득을 시도함 → 락을 획득하여 임계영역내로 진입하는 쓰레드를 락 소유자(owner)라고 부름 unlock() 루틴: 락 소유자가 unlock() 을 호출하면 락은 다시 사용 가능한 상태가 됨 Pthread 락 쓰레드간의..
· 운영체제
연속 메모리할당 연속 메모리할당이란 멀티 프로세스 환경에서 여러 프로세스 메모리에 연속적으로 로드하는 방법. 크게 고정 분할, 동적 분할 두가지 방식이 있음 고정 분할 방식 메모리 영역을 구분한뒤 각 영역에 프로세스를 할당하는 기법, 분할된 영역의 크기는 서로 다를 수 있음. 메모리에 올릴 수 있는 프로세스 수와 각 프로세스 크기가 제한된다는 단점이 있고, 단편화(Fragment) 문제가 발생할 수 있음. Process Queue 에 들어오는 순서대로 메인메모리에 프로세스를 할당함 멀티프로그래밍 정도는 메모리에서 동시에 실행할 수 있는 프로세스의 수를 나타냄. 따라서 RAM에 형성된 블록의 수에 따라 시스템의 멀티프로그래밍 수준이 결정됩니다. 장점 추가로 메모리에 할당할 수 있는 프로세스의 수를 결정하는..
· 운영체제
메모리 관리 전략 하드웨어는 한정된 메모리를 가지고 있지만 현대 컴퓨터는 다수의 프로세스를 실행한다. 즉 한정된 메모리 자원을 효율적으로 프로세스에게 배분해야만 다수의 프로세스가 동시에 실행되는 것 처럼 보이는 멀티 태스킹을 수행할 수 있다. (시분할 시스템의 등장) 메모리 가상화의 목표 투명성 실행중인 프로그램이 물리 메모리의 존재를 알지 못하도록 가상 메모리를 구현해야함 효율성 가상화가 시간, 공간 측면에서 효율적이도록 해야함, 운영체제는 TLB 등의 하드웨어 기능을 포함하여 하드웨어의 지원을 받아야함. 보호 프로세스를 다른 프로세스로 부터 보호하고 프로세스가 메모리에 접근하는 것도 보호해야함 메모리 관리 API UNIX/C 프로그램에서 메모리를 할당하고 관리하는 방법을 이해하는 것은 강력하고 안정적..
· 운영체제
스케줄링 종류 스케줄러는 크게 non-preemtive 스케줄러와** preemtive 스케줄러** 두가지로 나뉜다. 이번 게시글에서는** non-preemtive 스케줄러**와** preemtive 스케줄러** 각각의 종류와 장단점을 비교하고 더 나아가 multi-level-feedback-queue 에 대해서 알아본다 평가 지표 스케줄러의 성능을 비교하려면 적절한 평가지표가 사용되어야한다. 평가지표중 하나로는 turnaround time 이 존재한다 turnaround time = 작업이 완료된 시간 - 작업이 도착한 시간 Non-preemtive 스케줄러 Non-preemtive 스케줄러는 프로세스가 자발적으로만 프로세스의 상태를 변경하는 스케줄러를 말한다. First-in-Fisrt-Out 스케줄..
· 운영체제
개요 페이징 테이블의 두번째 문제점은 크기임, 페이지 테이블의 각 항목은 4바이트, 페이지 크기가 4KB 일 경우 주소공간에는 2^20의 가상 페이지가 존재함. 핵심 질문: 페이지 테이블을 어떻게 작게 만들까 단순한 배열 기반의 페이지 테이블은 크기가 크며 일반적인 시스템에서 메모리를 과도하게 차지함 간단한 해법: 더 큰 페이지 페이지 크기를 증가 시켜서 VPN 비트 수를 줄임 10KB → 16KB ==> 2^20 → 2^18 기존 페이지 테이블 대비 크기가 1/4로 감소 하지만 단순한 페이지 크기의 증가는 부작용을 수반함 가장 큰 문제 페이지 내부의 낭비 공간이 증가함, 내부 단편화의 증가로 이어짐 컴퓨터 시스템의 메모리가 금방 고갈되는 현상이 발생함 → 많은 컴퓨터 시스템들이 비교적 작은 페이지들을 ..
· 운영체제
페이징: 더 빠른 변환 (TLB) 페이징은 프로세스 주소 공간을 작은 고정된 크기로 나누고 각 페이지의 실제 위치를 메모리에 저장함 매핑 정보를 저장하는 자료구조를 페이지 테이블이라고 함 모든 load/store 명령어 실행이 추가적인 메모리 읽기를 수반하기 때문에 속도가 굉장히 느림 핵심 질문: 주소 변환 속도를 어떻게 향상할까 주소 변환을 어떻게 빨리할 수 있을까? 페이징에서 발생하는 추가 메모리 참조를 어떻게 피할 수 있을까? 어떤 하드웨어가 추가로 필요할까 운영체제가 어떤식으로 개입해야할까. 이를 위해 하드웨어의 도움을 받음. 주소변환을 빠르게 하기 위해 (Translation-lookaside buffer) 또는 TLB라고 부르는 것 TLB는 메모리 관리부 (MMU) 의 일부이며, 자주 참조되는..
파커초
'운영체제' 카테고리의 글 목록