1. 시스템 자원(컴퓨터 하드웨어) 관리자(1) CPU : 각 프로그램이 얼마나 CPU를 사용하는지?(2) Memory : 각 프로그램이 어느 주소에, 어느 정도의 메모리 공간을 확보해줘야 하는지?(3) 저장매체 : 어떻게, 어디에 저장해야 하는지?(4) IO(마우스
멀티 태스킹 : 단일 CPU에서 여러 응용 프로그램의 병렬 실행을 가능케 하는 시스템복수의 프로그램의 실행 흐름을 잘게 쪼게서 Switching 하는 방식으로 실행되는 것으로시분할 시스템과 비슷한 실행 방식(사용자 경험으로는 동시에 실행되는 것처럼 보임)멀티 프로그래밍
시스템 콜(시스템 호출 인터페이스)운영체제의 각 기능을 사용할 수 있도록 제공되는 명령 또는 함수개발자는 Application/Shell 등을 통해 API(각 언어별 인터페이스)를 호출하고호출된 API는 내부적으로 System Call을 통해 운영체제의 각 기능을 사용
CPU Protection Rings커널 모드특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드OS가 사용하는 모드(사용자 모드에서 특권 명령어를 사용하면 거절됨)사용자 모드 : 응용 프로그램이 사용커널 모드에서만 실행 가능한 기능들이 있음이러한
프로세스(Process) : 메모리에 올려져서 실행중인 프로그램(프로세스는 작업, task, job이라는 용어와 혼용됨)하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용 하면서 실행 될 수 있음(여러 프로그램 간에 통신하면서 동작할 수도 있음 - IPC
ready, running, blocked 세가지 상태가 중심프로그램 실행 중(running) 파일 읽기를 요구파일 읽기를 시작하면서 block 상태가 되고 읽기가 끝나면ready 상태로 변경되어 스케쥴러에게 알려줌스케쥴러는 ready 상태에 있는 프로세스 중 하나를
인터럽트 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황(IO/waiting/block/Exception 등)이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술인터럽트는 선점형 스케쥴러나 IO 처리 후 동작에서 필수적이다.
1. CODE 영역컴파일 된 바이너리 Code들이 저장되는 메모리 영역2\. DATA 영역선언된 (전역)변수들(함수 내 변수는 제외)이 저장되는 메모리 영역초기화 되지 않은 값(int num;)은 BSS 영역 / 초기화 된 값(int num = 1;)은 DATA 영역
컨텍스트 스위칭스케쥴러가 CPU에서 실행되고 있는 프로세스를 변경할 때 각각의 프로세스에해당하는 컨텍스트(ProgramCounter(PC)/StackPointer(SP) 등의 레지스터)를 변경하는 것빈번하게(10ms) 일어나므로 오버헤드가 있을 수 있어 어셈블리어로 실
IPC(InterProcessCommunication)프로세스 간 통신방법으로 기본적으로는 프로세스 간 공유는 위험하나여러 프로세스를 동시에 만들어 실행하면(병렬처리) 성능적으로 우수하므로 IPC가 필요fork() 시스템콜프로세스를 복사하는 함수로 실행할때마다 같은 프
쓰레드의 가장 큰 특징이자 장점은 프로세스 안에 동시 실행이 가능하면서도프로세스안의 데이터를 모두 접근 가능하다는 점이다.쓰레드를 가장 간단하게 이해하자면 한 프로세스 안에 여러개의 Stack을 가지는 것이라고 할 수 있다.위와 같이 된다면 Data는 공유하되 각 실행
만약 RAM이 8GB라면 프로세스를 2개 밖에 사용하지 못한다.그래서 필요한 것이 가상메모리!마치 CPU가 프로세스 간을 Switching 하듯이RAM에서 프로세스(Code)를 바꿔가면서 메모리에 올려서 사용한다.전체 프로세스의 Code를 한 시점에 모두 필요한 것이
파일시스템운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘4kb 크기의 블록 단위로 데이터를 관리 -> 관리해야 할 데이터가 점점 커짐 \-> 복수의 블록들을 포함하는 파일이라는 개념이 탄생외부단편화연속된 공간에 파일들을 저장하면 중간에 저장된 파일의 사이
하나의 하드웨어에 가상 머신으로 여러개의 컴퓨터처럼 동작하게 하는 프로그램TYPE1(Bare Metal, KVM(AWS))하드웨어 바로 위에 VMM를 설치하여 복수의 가상머신을 구동시키는 방식 TYPE2(VMWare)OS 위에 하나의 application처럼 VMM을