본문 바로가기

CS STUDY/운영체제

(14)
뮤텍스 & 세마포어 세마포어(Semaphore) 멀티 프로그래밍 환경에서 공유된 자원의 데이터가 한 번에 하나의 프로세스만 접근할 수 있도록 제한 동기화 대상이 하나 이상 세마포어를 소유하지 않는 스레드가 세마포어 해제 가능 세마포어는 시스템 범위에 걸쳐 있고 파일로 존재 뮤텍스(Mutex) 공유 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘 동기화 대상이 하나일 때 사용 자원을 소유하고 있는 스레드만이 뮤텍스 해제 가능 뮤텍스는 프로세스의 범위를 가지며 프로세스가 종료될 때 자동으로 정리 뮤텍스 vs 세마포어 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없음 Q. 뮤텍스와 세마포어의 적용범위의 차이? A. 세마포어는 프로세스간에 주로 사용, 뮤텍스는 스레드간에 주로 사용, 뮤텍스는 0,1로 ..
시스템 콜(System Call) 시스템 콜(System Call) 개념 사용자가 직접 커널 접근x => 응용프로그램에서 시스템 커널에 어떠한 기능을 수행해 달라고 요청 명령어 fork, exec: 새로운 프로세스 생성 wait: 프로세스가 만든 자식 프로세스가 끝날 때까지 기다리는 명령어 fork() 함수를 통해 부모 프로세스를 복사하면 주소 공간을 Binary 통째로 복사 Program Counter까지 모두 복사되니 자식 프로세스는 부모와 똑같이 동작 자식은 main()의 시작부터 실행하는 것이 아니라 fork() 다음 코드부터 실행 Q. 그러면 어떻게 자식과 부모를 구분? A. 리턴값의 차이 => 부모는 양수 자식은 0 exec()라는 System Call을 통해 프로그램을 덮어 씌우기 그 다음 코드 실행x wait()의 경우 자..
파일 시스템(File System) 파일 시스템(File System) 개념 운영체제와 모든 데이터, 프로그램의 저장과 접근을 위한 기법 제공 시스템 내의 모든 파일에 관한 정보를 제공하는 계층작 디렉터리 구조 파일, 파일의 메타데이터, 디렉터리 정보 관리 접근 방법 순차 접근(Sequential Access) 현재 위치에서 읽거나 쓰면 offset 자동 증가 뒤로 돌아가기 위해서 되감기 필요 직접 접근(Direct Access) 임의의 순서로 접근 => LP판 사용 방식과 유사 읽기나 쓰기의 순서에 제약이 없다. 색인 접근(Index Access) 파일에서 레코드를 찾기 위해 색인을 먼저 찾고 대응되는 포인터 얻은 후 파일에 접근 크기가 큰 파일에 유용 디렉터리와 디스크 구조 1단계 디렉터리 모든 파일들이 디렉터리 밑에 존재, 파일들은 ..
메모리(Memory) 메모리(Memory) 메인 메모리(Main Memory) CPU가 직접 접근할 수 있는 기억장치 프로세스가 실행되려면 프로그램이 메모리에 올라와 있어야 함 메모리의 주소 Logical address(=virtual address) 프로세스마다 독립적으로 가지는 주소 공간 CPU가 보는 주소 각 프로세스마다 0번지부터 시작 Physical address 메모리에 실제 프로세스가 올라가는 위치 주소 바인딩(Address Binding) 컴파일 후 독자적인 숫자 주소가 생성이 되고, 실행이 되려면 물리적 메모리에 올라가야 함 논리적 주소 => 물리적 주소(Binding 시점) Compile Time Binding Load Time Binding Run Time Binding or Execution Time B..
페이지 교체 알고리즘 페이지 교체 알고리즘 FIFO(First In First Out) 알고리즘 시간상 가장 먼저 메모리에 올라온 페이지를 가장 먼저 내보내는 알고리즘 큐로 구현하기에 구현은 간단 성능은 별로 => 앞으로 사용하지 않을 페이지를 내보내는 것이 중요 OPT(Optimal) 알고리즘 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 => 실제로는 미래의 패턴 알기 힘듬 모든 교체 알고리즘 중 페이지 부재 현상이 가장 적게 발생 LRU(Least Recently Used) 알고리즘 가장 오랫동안 사용하지 않은 페이지를 교체 최적 알고리즘과 비슷한 효과 성능이 좋음 LFU(Least Frequently Used) 알고리즘 참조횟수가 가장 적은 페이지를 교체 => 사용한 횟수 카운팅 참조횟수가 같은 경우엔 다른 추가 ..
페이징과 세그먼테이션 페이징(Paging)과 세그먼테이션(Segmentation) 두 기법의 사용 이유 다중 프로그래밍 시스템에서 다수의 프로세스를 수용하기 위해 주기억장치를 동적으로 분할하는 메모리 관리 필요 메모리 관리 기법 1. 연속 메모리 관리 기법 프로그램 전체가 메모리에 연속적으로 할당 고정 분할 기법의 경우 내부 단편화 발생 동적 분할 기법의 경우 외부 단편화 발생 **내부 단편화란? 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간의 낭비 발생 **외부 단편화란? 남아있는 공간이 연속적이지 않아 사용할 수 없어 메모리 공간의 낭비 발생 2. 불연속 메모리 관리 기법 프로그램의 일부가 서로 다른 주소 공간에 할당 가능 페이징(Paging) 프로세스의 주소 공간을 페이지(page)란 단위의 고정된 사이..
Race Condition & Deadlock Race Condition(경쟁 상태) Race Condition이란? 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태 => 경쟁상태로 생기는 영역을 임계구역(Critical Section)이라고 함 ex) 동생이 은행에 20000원의 잔고가 있었고 10000원을 출금하고 있다. 그 사이 언니가 동생에게 용돈 7000원을 입금해주었다. 그렇다면 잔고는 얼마일까? 기대하는 잔고는 17000원!! 하지만 경쟁상태일 때, 동생의 입장: 현재 잔고 20000 - 10000 = 10000원 언니의 입장: 현재 잔고 20000 + 7000 = 27000원 해결하는 방법? Mutex, Semaphore, Monitor DeadLock(교착 상태) 개념 두 개 이상의 프로세스나 ..
CPU Scheduling CPU Scheduling 개념 프로세스는 생성되고 난 후 여러 상태를 거치게 된다. 운영체제의 CPU 스케줄러는 Ready 상태의 프로세스 중에서 어떤 프로세스에게 CPU를 할당할지 결정한다. 목적 공평성: 프로세스에게 자원을 배분하는 과정이 공평해야 함 효율성: CPU가 놀면 안 됨 안정성: 프로세스가 증가해도 안정적으로 돌아가야 함 성능 척도 시스템 입장 CPU 사용률(CPU Utilization): 전체 시스템 시간 중 CPU가 작업을 처리하는 시간의 비율 처리량(Throughput): CPU가 단위 시간당 처리하는 프로세스의 개수 사용자 입장 대기시간(Waiting Time): 프로세스가 준비 상태에서 CPU를 할당받을 때까지 대기한 시간 응답시간(Response Time): 프로세스의 명령 요..