프로세스의 상태
·
Computer Science/Operating System
Create , NewUser의 Job/command 요청이 커널에 등록되는 상태.커널이 등록되면서 프로세스가 생성됨.커널 안에 프로세스를 위한 PCB가 생기고 초기값이 PCB에 저장.PCB(Process Control Block) 알아보기프로세스는 생성 되었으나, 아직 준비 큐에 들어가지 않은 상태이다.이때 커널은 메모리 공간이 있는지 확인한다.fork()나 exec() 함수를 통해 프로세스가 생성된 상태이다.fork() : 부모 프로세스의 주소 공간을 그대로 복사하며, 새로운 자식 프로세스를 생성. 주소 공간만 복사할 뿐, 프로세스의 비동기 작업 등은 상속하지 않음.exec() : 새롭게 프로세스를 생성  Ready프로세스가 생성되고 커널이 "메모리 할당"을 인지하고 (implicit 하게 자원 요청..
IPC(Inter-Process Communication)
·
Computer Science/Operating System
IPC(Inter-Process Communication)란?프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 방법.ex) 브라우저를 띄워 네이버 서버와 HTTP 통신해서 html 등의 파일을 가져오는 것 IPC의 종류공유메모리파일소켓파이프메세지 큐위 다섯가지 IPC 종류를 하나씩 살펴보자  공유메모리 (Shared Memory)여러 프로세스가 메모리를 공유하여 서로 통신할 수 있도록 하는 것.어떠한 매개체를 통해 데이터를 주고 받는게 아니라 메모리 자체를 공유.때문에 불필요한 데이터 복사의 오버헤드가 발생하지 않음.고속 데이터 전송 : 메모리에 직접 접근하므로 속도가 가장 빠른 방법같은 메모리 영역을 여러 프로세스가 공유하기 때문에 동기화 필요  파일(File)디스크에 저장된 데이터를 기반으로 통신..
멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)
·
Computer Science/Operating System
멀티프로세싱 (Mutiprocessing)멀티프로세싱이란? 여러 CPU를 사용하여 동시에 여러 프로세스를 실행하는 컴퓨팅기술. 각 프로세스는 독립된 메모리 공간을 갖고 있어 서로의 메모리에 직접 접근하지 않는다.⭐️ 프로세스 간 통신 (IPC) : 프로세스 간 데이터를 주고받기 위해 파이프, 메시지 큐, 공유메모리 등의 IPC 메커니즘을 사용. IPC(Inter-Process Communication) 설명 바로가기 멀티프로세싱의 장점과 단점장점여러 프로세스를 병렬로 실행함으로써 작업 처리 속도가 빨라짐 (성능 향상)하나의 프로세스가 실패해도 다른 프로세스에는 영향을 미치지 않음 (안정성)추가적인 CPU나 코어를 통해 쉽게 시스템 성능 확장이 가능함 (확장성)단점다중 CPU/코어 시스템은 단일 CPU 시..
컨텍스트 스위칭(Context Switching)
·
Computer Science/Operating System
Context Switching 이란?CPU에서 실행중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것.기존 프로세스/스레드의 상태 or 레지스터 값을 저장하고, 다음 프로세스/스레드의 상태 or 레지스터 값을 교체하는 작업.PCB나 TCB 를 기반으로 프로세스의 상태를 저장하고 다시 복원시키는 과정.* PCB란? [Computer Science/OS] - PCB(Process Control Block)    Context란?사용자와 다른 사용자 || 사용자와 시스템 || 디바이스간 상호작용을 미치는 개체의 현재 상황(상태)를 규정하는 정보들을 말한다.OS에서는 CPU가 프로세스/스레드를 실행하기 위한 해당 프로세스/스레드의 정보들을 말한다.context 의 구성요소CPU 레지스터 값 : 현재 ..
PCB(Process Control Block)
·
Computer Science/Operating System
PCB(Process Control Block)란?운영체제에서 관리할 필요가 있는 특정한 프로세스 정보를 포함하는 데이터 블록이다.커널 스택에 저장되며 각 프로세스가 생성될 때 고유의 PCB가 생성되고 프로세스가 종료되면 PCB는 제거된다.커널 스택 : 가상메모리는 사용자 공간과 커널 공간으로 구분되는데 이는 모두 스택 자료구조를 기반으로 관리된다, 때문에 사용자 스택, 커널 스택이라고도 한다. 사용자 스택은 유저모드에서만, 커널 스택은 커널모드에서만 접근 가능하다. 프로세스가 CPU를 점유하여 작업을 처리하다가, 상태가 전이되면 진행하던 작업 내용을 모두 정리하고 CPU에 반환해야 한다. 이때, 작업 내용을 PCB에 저장하여 후에 다시 CPU를 점유하여 작업을 수행해야할 때 PCB로부터 정보들을 알아내..
프로세스 메모리 구조, 프로세스/스레드 차이
·
Computer Science/Operating System
프로세스 메모리 구조프로세스 : 실행중인 프로그램의 작업 단위 Stack 영역지역변수, 매개변수, 함수가 저장되는 영역. 컴파일시 크기가 결정됨. 동적 할당 : 함수 호출 시 프레임을 할당하고, 함수 호출이 끝나면 해당 프레임을 해제하는 방식 LIFO(Last In, First Out) 방식으로 동작. 스택 오버플로우가 발생하지 않도록 주의! Heap 영역런타임에 할당된 객체나 배열 등 동적으로 할당된 메모리가 저장되는 영역. 동적 할당 : malloc, calloc, realloc 등의 함수로 메모리 할당이 이루어지며, free 함수로 메모리 해제 메모리 누수가 발생하지 않도록 주의! Data 영역BSS(Block Started By Symbol) 영역과 Data 영역으로 나뉘어져 있다.BSS(Bloc..
프로그램 컴파일 과정 - C, C++/Java ( Interpreter / JIT )
·
Computer Science/Operating System
보편적인 프로그램 컴파일 과정프로그램이란컴퓨터가 특정 작업이나 연산을 수행하도록 지시하는 명령어들의 집합.프로그램? 컴퓨터가 특정 작업이나 연산을 수행하도록 지시하는 명령어들의 집합컴파일? 고급 프로그래밍 언어로 작성된 언어를 컴퓨터가 이해할 수 있게 기계어(or 바이너리코드)로 변환하는 것 즉, 프로그램은 컴파일 된 파일이다.프로그램의 컴파일 과정은 다음과 같다. Soruce File프로그래머가 작성한 원본 코드 파일( .c ,  .cpp   등) Proprocessor전처리기. 소스코드의 주석 제거, 매크로 치환, 파일 병합과 조건부 컴파일 처리. (전처리된 파일을 출력. 일반적으로  .i  확장자) Compiler전처리된 소스코드를 어셈블리 코드로 변환. 이 단계에서 문접 검사와 최적화가 이루어남...
페이지 교체 알고리즘 - FIFO, LRU, LFU, MFU, NUR, OPT(오프라인 알고리즘)
·
Computer Science/Operating System
스와핑이 일어날 때 페이지 교체 알고리즘에 의해 페이지가 교체되게 된다. FIFO (First In First Out) 방법 : 메모리에 가장 먼저 올라온 페이지를 먼저 내보냄.특징구현이 간단하고 직관적성능이 좋지 않을 수 있음. Belady의 역설(FIFO anomaly)이 발생할 수 있음.즉, 페이지 프레임 수가 늘어날 수록 페이지 부재가 증가할 수 있음  LRU (Least Recently Used)방법 : 가장 오랫동안 사용하지 않은 페이지를 교체특징"가장 오랫동안 사용하지 않았다면 앞으로도 사용할 확률이 적을 것이다"라고 가정.자주 사용되는 페이지를 유지하므로 성능이 FIFO보다 상대적으로 좋음.프로세스가 주기억 장치에 접근할 때 참조된 페이지 시간을 기록해야 한함.-> 막대한 오버헤드가 발생할..
가상메모리(2) - 페이지폴트와 스와핑, 스레싱
·
Computer Science/Operating System
페이지 테이블 엔트리(PTE, Page Table Entry)페이지 테이블의 각각 행동들을 페이지 테이블 엔트리라고 한다.유효비트(valid bit) : 현재 해당 페이지에 접근 가능한지 여부.보호비트(protection bit) : 페이지에 접근할 권한을 제한하는 비트(rwx순으로 2bit으로).참조비트(reference bit) : CPU가 해당 페이지에 접근한 적이 있는지 여부.수정비트(modified bit) : 해당 페이지에 데이터가 수정된 적이 있는지 여부. 스왑 아웃 될 때 보조기억 장치에 기록하기 위해 사용.  페이지폴트 (Page fault)와 스와핑스왑 영역(Swap Space)? 프로세스의 가상 메모리 공간 전체를 위해 예약된 디스크 공간스와핑? 메모리의 당장 사용하지 않는 영역을 하..