프로세스 vs 스레드 Q. 프로세스는 무엇인가요? A. 프로세스는 OS 입장에서 실행중인 작업의 단위입니다. 모든 프로세스는 독립적인 메모리 공간을 가지며, 최소 한 개의 메인스레드를 포함합니다. Q. 스레드는 무엇인가요? A. 하나의 프로세스 내에서 하나 이상으로 쪼개지는 작업의 단위입니다. Q. 프로세스와 스레드의 차이에 대해 설명해주실래요? A. 프로세스는 각 프로세스마다 독립적인 메모리 공간을 가지고 있기 때문에 프로세스 간 자원공유가 어렵습니다. 하지만 스레드는 프로세스 내에서 stack외에 메모리 공간을 공유하기 때문에 자원공유가 쉽습니다. 또한, 프로세스는 현재 실행중인 프로세스를 교체할 때 상대적으로 높은 context switching 비용이 발생합니다 Q. 멀티프로세싱과 멀티스레딩에 대..
OS
1. 파일 & 파일 시스템 파일 논리적인 저장 단위 켬퓨터 시스템의 편리한 사용을 위해 정보 저장의 일관된 논리적 관점 제공 레코드 혹은 블록 단위로 비휘발성 보조기억장치에 저장 파일 시스템 구조 메타 영역 : 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간 정보, 삭제 유무 등 파일의 정보 데이터 영역 : 파일 데이터 운영체제와 모든 데이터, 프로그램의 저장과 접근을 위한 기법 제공 시스템 내의 모든 파일에 관한 정보를 제공하는 계층적 디렉터리 구조 파일 및 파일의 메타데이터, 디렉터리 정보 등 관리 2. Access Methods 순차 접근(Sequential Access) 가장 단순한 방법으로 파일의 정보가 레코드 순서대로 처리 직접 접근(Random Access) 파일의 레코드를 임의의 순..
1. Address Binding 프로세스의 주소 논리적 주소 : 가상 주소, CPU가 생성하는 주소로 프로세스마다 독립적으로 가지는 주소 공간이기 때문에 프로세스의 내부에서 사용하고 각 프로세스마다 0부터 시작한다. 물리적 주소 : 프로세스가 실행되기 위해 실제로 메모리에 올라가는 위치 💡 모든 프로그램은 실행하기 위해 디스크에서 메인 메모리로 올라와야 하고, 메모리로 올라오기 위해 Address Binding 작업이 이루어 져야 한다. 즉, 어떤 프로그램이 메모리의 어느 위치에, 어떤 물리적 주소에 load될지 결정하는 과정이다 Compile Time 프로세스의 물리적 주소가 컴파일 시 정해짐 ⇒ 절대 주소(Absolute Address) 프로세스 내부에서 사용하는 논리적 주소와 물리적 주소가 동일하..
1. 가상 메모리 (Virtual Memory) 메모리 관리 기법 중 하나로, 실제로 이용 가능한 자원을 추상화하여 사용자들에게 매우 큰 메모리인 것처럼 보이게 만드는 것. 즉, 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식. 요구 페이징 기법 당장 실행에 필요한 페이지만 주기억장치에 적재하는 기법 Valid-Invalid Bit를 사용하여 관리 Page Fault 페이지 테이블을 통해 참조하려는 페이지가 valid(1) 즉, 메모리에 존재하면 페이지 테이블을 통해 논리주소에서 물리주소로 접근 invalid(0)이면 Page fault 발생 2. 페이지 기법 알고리즘 FIFO 가장 오래된 페이지를 내보내는 알고리즘 구현은 간단하지만 성능이 좋지 않음 OPT 앞으로 가장 오랫동안 사용..
1. 메모리 단편화 (Memory Fragmentation) 💡 메모리 공간이 조각처럼 나뉘어져 실제로는 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태 내부 단편화 실제 사용가능한 메모리보다 적은 메모리의 프로세스가 할당되는 경우 메모리 공간이 낭비되는 상황 외부 단편화 총 메모리 공간은 충분하지만 실제로는 할당할 수 없는 상황 ➡️ 연속 메모리 관리 시 발생하는 단편화 문제를 해결하기 위한 것이 바로 페이징과 세그멘테이션 기법 2. 페이징 (Paging) 프로세스의 주소 공간을 고정 크기 기법을 사용해 물리적 메모리에 불연속적으로 저장하는 방식 프로세스는 Page 단위인 고정 크기로 분할, 메모리는 Frame 단위인 고정 크기로 분할 각 프로세스는 한개의 Page Table을 가짐 Page..
세마포어(Semaphore) 공유된 자원의 데이터 혹은 임계영역 등에 프로세스나 스레드를 나타내는 값을 두어 상호배제 구현, 공유 자원에 접근할 수 있는 최대 허용치만큼 동시 사용자 접근 허용 (동기화 대상이 하나 이상) P 연산 : 임계 영역에 들어가기 전에 수행 V 연산 : 임계 영역에서 나올 때 수행 뮤텍스(Mutex) 키를 기반으로 한 상호배제 기법, 이 객체를 소유한 스레드 혹은 프로세스만이 공유 자원에 접근 가능함 (동기화 대상이 하나) lock : 임계 구역에 들어간 권한 얻음 unlock : 임계 구역을 모두 사용했음을 알림
Race Condition 두 개 이상의 프로세스가 공통 자원을 병행적으로 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행결과가 같지 않고 달라지는 상황 임계 영역( critical section) 운영체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 자원에 접근하는 프로그램 코드 부분 임계 영역 충족 조건 상호 배제 (mutual exclusion) : 한 프로세스만 임계 영역에 진입 가능 진행 (progress) : 임계 영역에 한 프로세스가 진입해야함 유한 대기(bounded waiting) : 프로세스가 임계 영역에 진입하기 위해 무한정으로 기다리는 기아 현상이 발생하면 안됨