컨텍스트 스위칭(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)? 프로세스의 가상 메모리 공간 전체를 위해 예약된 디스크 공간스와핑? 메모리의 당장 사용하지 않는 영역을 하..
가상메모리(1) - 페이지테이블, TLB
·
Computer Science/Operating System
가상 메모리(Virtual Memory)란?가상메모리는 OS에서 사용되는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용가능한 메모리 자원(실제 주소, physical address)을 추상화 하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것이다.  ☑️ 가상 메모리의 장점 1. 주기억장치의 효율적인 관리(스와핑)하드디스크를 주기억장치에 대한 캐시로 설정. 쓰지않는 영역은 하드디스크로 옮긴 뒤 필요할 때만 램에 데이터를 불러와 올리고 사용하지 않으면 하드디스크로 내림으로써 램을 효과적으로 관리.2. 메모리 관리의 단순화각 프로세스마다 가상 메모리의 통일 된 주소 공간을 배정할 수 있으므로 메모리 관리가 단순해짐.3. 메모리 용량 및 안정성 보장가상메모리 공간은 거의 무한하다고 생각해도 ..
시스템 콜(System Call), 사용자 모드(User mode), 커널 모드(Kernel mode), modebit
·
Computer Science/Operating System
시스템 콜(System Call) 운영체제는 사용자 모드(User mode)와 커널 모드(Kernel Mode)로 나뉘어 동작한다. 이를 이중 동작 모드(Dual Mode Operation)라고 한다. 사용자 모드는 하드웨어에 직접적으로 접근할 수 없고, 커널 모드는 모든 시스템 메모리와 CPU Instruction 뿐만 아니라 하드웨어에도 직접 접근이 가능하다.이렇게 이중 동작 모드로 사용자가 하드웨어와 직접적으로 상호작용 하는 것을 막아 시스템을 보호한다. 대신, 사용자는 시스템 콜(System Call)을 통해 커널모드로 접근할 수 있다. ※ 시스템콜 :운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스[유저] --> [시스템콜] --> [커널 함..