본문 바로가기

CS/Operating System10

[운영체제] 인터럽트(Interrupt) 인터럽트(Interrupt) - 비동기식 인터럽트 - 하드웨어 인터럽트 - 정해진 기준없이 예측불가하게 이벤트 발생 - I/O 인터럽트, 키보드 인터럽트, 네트워크 인터럽트 등 예외(Exception) - 동기식 인터럽트 - 명령어 실행 후 그 결과(Instruction fault)로인해 발생하는 경우 - divde by zero, page fault, overflow 등 트랩(Trap) - 실행중인 프로그램 내에 테스트를 위한 특별한 조건을 걸어 놓는 것 - 각 상황에 맞는 handle 함수 또는 서비스 루틴을 매핑 2020. 6. 20.
[운영체제] 캐시 메모리(Cache Memory) 캐시 메모리 - 속도가 빠른 저장 장치와 느린 저장 장치 사이에 속도 차이에 따른 병목현상을 줄이기 위한 범용 메로리 - 지역성을 이용해 CPU가 어떤 데이터를 원할 것인가를 어느 정도 에측해 캐시 메모리에 데이터를 저장 지역성(Locality) - 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성 1) 시간지역성(Temporal Locality) - 최근에 참조된 주소의 내용이 재참조될 가능성이 높은 특성 2) 공간지역성(Spatial Locality) - 최근에 참조된 주소의 인접한 데이터가 참조될 가능성이 높은 특성 캐시 라인(Cache Line) - 캐시에 저장된 데이터를 빠르게 추출하기 위해 특정 자료구조를 사용해 묶음으로 저장하는 것 - 캐시에 저장하고 있는 데이터는 데이터의 메모리 주소등.. 2020. 6. 20.
[운영체제] 가상메모리(Virtual Memory) 가상메모리 - 프로세스 전체가 메모리 내에 적재되지 않더라도 실행이 가능하도록 하는 기법 - 가상 메모리 기법을 통해 물리 메모리 크기에 제약받지 않고 더 많은 프로그램을 동시에 실행할 수 있음 - 프로세스에서 실제로 사용되지 않는 영역을 제외하고 메모리에 적재함으로싸, 메모리에 적재하는 용량을 줄임 가상메모리의 크기 - 가상메모리의 크기는 이론상 CPU bit, 버스의 대역폭에 따르게 됨 - CPU 비트 수로 표현할 수 있는 주소값의 범위 - 32 bit CPU에서 가상메모리의 크기는 2^32 - 1(4GB) - 64 bit CPU에서 가상메모리의 크기는 2^64 - 1(16,000,000 TB) 요구 페이징(Demand Paging) - 가상 메모리에서 프로그램 실행을 위해 초기에 필요한 것만 적재하.. 2020. 6. 20.
[운영체제]메모리 관리 전략(Memory Management Strategy) 메모리 관리 전략 - 메모리 용량이 증가함에 따라 프로그램의 크기 또한 계속 증가하고 있기 떄문에 메모리는 언제나 부족 - 제한된 물리 메모리의 효율적인 사용과 메모리 참조 방식을 제공하기 위한 전략 효과적인 메모리 사용 1) 메모리 낭비 방지 (1) 동적 적재(Dynamic Loading) - 프로그램 실행에 반드시 필요한 루틴과 데이터만 적재하는 기법 - 모든 루틴(ex. 오류처리)과 데이터(ex. 배열)는 항상 사용하지 않고, 실행 시 필요하다면 그때 해당 부분을 메모리에 적재 (2) 동적 연결(Dynamic Linking) - 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법 (3) 스와핑(Swapping) - CPU에서 실행중이지 않는 프로세스는 저장장치의 Swap .. 2020. 6. 20.
[운영체제] 스케줄러(Scheduler) 스케줄러(Scheduler) - 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할 1) Scheduling Queues - 프로세스를 관리하는 큐 (1) Job Queue(batch queue) - 시스템 안의 모든 프로세스의 집합 (2) Ready Queue - ready 상태의 메인메모리 안에 상주하는 모든 프로세스의 집합 (3) Device Queue - I/O 장치 사용을 대기하는 프로세스들의 집합 2) 스케줄러 종류 (1) 장기 스케줄러(Long-term scheduler) / 잡 스케줄러(Job scheduler) - degree of multiprogramming 제어 - 디스크와 메모리 사이의 스케줄링 담당 .. 2020. 6. 18.
[운영체제] 교착상태(Deadlock) 교착상태(Deadlock) - 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상 1) 교착상태의 4가지 조건 (1) 비선점(Nonpreemptive) - 한 프로세스가 다른 프로세스의 자원을 강제로 빼앗을 수 없음 (2) 순환대기(Circular Wait) - 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 그 관계가 순환적인 구조 (3) 점유대기(Busy and Wait) - 공유 자원에 대한 접근 권한을 가지고 있는 프로세스가 다른 자원에 대한 접근 권한을 요구 (4) 상호배제(Mutual Exclusion) - 한 번에 한 프로세스만 공유 자원에 접근 가능하며, 공유 자원에 대한 접근 권한이 제한 2) 교착상태 처리 방법 (1).. 2020. 6. 18.
[운영체제] 동기화 프로세스 동기화 - 하나의 자원을 한 시점에 하나의 프로세스만이 접근 스레드 동기화 - 하나의 코드 블록 또는 메소드를 한 시점에 하나의 스레드만이 접근 경쟁상황(Race Condition) - 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황 임계 영역(Critical Section) - 멀티 스레드 환경에서 여러 개의 스레드가 동시에 접근 시 문제가 발생하는 코드 영역 1) 임계 역역 문제 해결조건 (1) 상호 배제(Mutual Exclusion) - 한 스레드가 임계 영역에서 실행 중이면 다른 스레드는 접근 불가능 (2) 진행(Progress) - 임계 영역에서 실행중인 스레드가 없다면, 임계 영역으로 진입하려는 스레드 중 하나는 유한한 시간 내에 진입할 수 있어야 함 (3) 한정된 대기(Bou.. 2020. 6. 18.
[운영체제]멀티프로세스와 멀티스레드 멀티 프로세스와 멀티스레드 1) 멀티 프로세스 다수의 프로세스를 실행하는 것 2) 멀티 스레드 하나의 프로세스를 다수의 실행 단위로 나누어 실행하는 것 3) 멀티 프로세스와 멀티 스레드의 차이 (1) 멀티 프로세스 (+) 하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스가 영향을 받지 않음 (+) 멀티 스레드처럼 동기화 작업이 별도로 필요하지 않음 (-) 자원 소모, 메모리 낭비, 문맥 교환으로 인한 비효율성 (-) IPC 통신으로 인한 비용 (2) 멀티 스레드 (+) 문맥 교환에 소비되는 시간을 줄일 수 있음(스택 영역만 문맥교환이 일어남) (+) 자원을 공유하기 때문에 메모리 낭비를 줄임 (-) 동기화 작업이 필요 (-) 하나의 스레드가 비정상적으로 종료 시, 다른 스레드도 종료될 수 있음 4.. 2020. 6. 18.
[운영체제] 프로세스와 스레드 프로그램 - 저장 장치에 저장된 실행할 수 있는 파일 프로세스 1) 프로세스 - 메모리에 올라와 실행 중인 프로그램의 인스턴스 - 코드, 데이터, 스택, 힙 영역으로 구성 - 프로세스 간 통신을 위해 IPC(Inter-Process Communication) 사용(파일, 소켓, 파이프 등) 2) 프로세스 제어 블록(PCB, Process Control Block) - 프로세스에 대한 정보를 저장하고 있는 자료구조 - 프로세스 생성과 동시에 고유한 PCB 생성 - 프로세스가 CPU를 할당받아 작업하다가 Context Swithing 발생 시 실행 중인 프로세스의 정보를 PCB에 저장하고, 다시 CPU를 할당받았을 때, PCB에 저장된 정보를 기반으로 이전에 멈췄던 시점부터 다시 작업을 수행 - 프로세스 식.. 2020. 6. 18.
[운영체제] 운영체제 운영체제 1)운영체제의 개념 - 자원의 관리와 보호, 사용자 인터페이스 제공, 하드웨어 인터페이스 제공 등을 하는 시스템 소프트웨어 2) 운영체제의 역할 - 자원 관리(효율성) - 자원 보호(안정성) - 하드웨어 인터페이스(디바이스 드라이버) 제공(확장성) - 소프트웨어 인터페이스(GUI) 제공(편리성) 2. 운영체제의 구조 1) 커널과 인터페이스 (1) 커널 - 프로세스 관리, 메모리 관리, 저장 장치 관리 등 운영체제의 핵심기능을 모아놓은 것 (2) 인터페이스 - 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 다시 알려주는 역할 2) 시스템 호출과 디바이스 드라이버 (1) 시스템 호출(System call) - 운영체제는 커널 모드와 사용자 모드로 나누어져 있음 - 커널 모드에서 자원에 접근하.. 2020. 3. 30.