목록대학생활/운영체제 (6)
celina의 이것저것
9-7 리눅스 CFS (Complete Fair Share Scheduler) 리눅스 커널의 스케줄러 CFS는 스케줄러를 기초로한 RB-트리 구조를 사용하는 성능을 가지는 스케줄러 기본 개념 - 모든 프로세스들에게 CPU를 공평하게 배분하는 것을 목표로 한다 - n개의 Process에게 각각 1/n의 Process time 제공 - 특정 시간안에 n개의 프로세스가 모두 동일한 시간동안 실행 virtual runtime, 가상의 CPU사용시간, 우선순위(가중치)가 부여된 CPU 시간 해당 프로세서의 vruntime 값을 누적 스케줄링 시 가장 낮은 vruntime을 가진 프로세스를 다음에 실행할 프로세스로 선택함 특정 시간 간격으로만 스케줄링 결정을 내릴 수 있음 CFS 자주 실행 -> 각 프로세스가 작은..

LDE CPU를 가상화하기 위해 OS는 물리적인 CPU를 이용해 여러 프로세스를 동시에 실행해야 한다. 어떻게? 한 프로세스를 잠시 실행하고, 다른 프로세스를 다시 실행하는 것을 반복하는 time sharing을 이용하는 것 이 때 performance(추가적인 overhead를 줄이면서 virtualize)와 control(OS가 process를 어떻게 control 할 것인가) 을 고려해야한다. => 프로그램을 최대한 빠르게 실행하기 위한 방법 중 하나가 LDE이다 direct execution은 프로그램을 CPU 위에 직접 실행하는 것 위 Timeline처럼 단순해 보이지만 몇 가지 문제가 있다. Problem #1 : 제한된 연산 Restricted Operations direct executio..

API 사용자가 OS를 통해서 어떤 하드웨어 리소스들을 접근하거나, 실행을 하거나, 제어를 하려고 하는 것들, 그런 함수들 1. fork 자식 프로세스를 생성하고 부모 프로세스 자원의 사본을 할당한다. #include #include #include int main(int argc,char * argv[]){ int rc = 0 printf("hello world (pid:%d)\n",(int)getpid()); int rc = fork(); if(rc < 0){ // fork failed; exit fprintf(stderr,"fork failed\n"); exit(1); } else if(rc == 0){ // child (new process) printf("hello, i am child (pid..

프로세스의 개념 - 실행 중인 프로그램 - 컴퓨터는 동시에 여러 기능을 수행 ** PC (Program Counter) - CPU 내부적으로 저장돼 있는 레지스터의 일종 - 각 프로세스는 각자 고유의 pc값이 존재한다 - ex) 100줄짜리 코드가 있을때 제일 처음 1번줄 실행 -> pc값 1 , 2번줄 실행 -> pc값 2 => 프로세스 단위로 CPU가 작업들을 처리하는데 프로세스들은 항상 고유의 상태가 있다 => 프로세스는 지금 CPU에서 실행중인지 메모리에 있는지 등등 이런 상태를 알 수 있는 상태값이 있다 - 프로세스는 시스템을 동작시키고 동시에 수행되는 활동을 관리 - 운영체제가 프로세스 생성, 종료, 일시정지, 재시작, 꺠우기 등 프로세스가 서비스할 때 수행하는 다양한 연산을 제공한다 이걸 A..

대부분의 운영체제는 하드웨어 구성에 의존하지 않게 구현 CPU 성능은 2004년 수준에 머물러 있음 더 이상 상승 X -> core의 갯수를 늘리는 방식으로 가고 있음 자원의 범주는 하드웨어와 소프트웨어 모두를 통틀어서 말함 하드웨어 : 실제 물리적 장치, 물리적으로 만질 수 있는 것들, 프로세서, 메모리, 2차 저장소, 기타 장치 소프트웨어 : 프로그램 --(실행)--> 프로세스, 스레드, 파일, 데이터베이스 하드웨어 구성 요소 하드웨어의 구성 프로세서, 메인 메모리, 입출력 장치 ** 메인 보드 시스템의 중심 PCB CPU와 메인메모리가 서로 통신하는데에는 메인보드가 그 역할을 한다 그래서 CPU와 메모리의 호환성을 항상 체크해야한다 폰 노이만 구조 - OS도 일종의 프로그램이기 때문에 메인메모리에 ..
가상화 (virtualization) 란? 프로세서, 메모리, 디스크와 같은 물리적인 자원을 이용 이를 이용한 가상의 자원을 생성 운영체제는 사용자 프로그램에 제공하기 위한 시스템을 제공 ** core 하나의 코어는 독립적으로 명령어를 실행할 수 있는 CPU의 처리 단위 하나의 코어일때 명령어는 한 타임에 한 번만 실행가능함 예전에는 단일코어였지만 요즘은 멀티코어 환경임 => 단일코어환경에서 여러 개의 명령어를 어떻게 처리하지? => 사용자 입장에서 나만을 위한 코어가 있는 것처럼 제공해주게끔 제공해줌 => CPU가상화 가상화는 크게 두 가지로 나눌 수 있다 1. CPU 가상화 - 하나의 물리적인 CPU를 여러 개의 가상 머신 또는 환경에서 사용할 수 있도록 하는 것 - CPU를 다양하게 가상화 시켜서 ..