목록컴퓨터공학/OS (11)
이모저모
java thread의 경우에는 마찬가지로 user level로 동작하는 데 이때 우선순위를 주어지면, 리눅스의 경우에는nice value와 맵핑되어서 스케쥴링이 된다.!!! http://www.javamex.com/tutorials/threads/priority_what.shtml 유저레벨 쓰레드와 커널레벨 쓰레드와의 관계에 대해서 고민을 해보았습니다. 그런데 이 모델은 리눅스 커널버젼에 따라 달라지게 됩니다. 일단 리눅스 커널 2.4버젼에대해서 살펴보았습니다. 리눅스에서 쓰레드를 사용할때 보통 pthread를 사용합니다. kldp에서나 어디에서든 pthread를 가지고 유저레벨스레드다 라고 말을 하는 분이 계시고 아니다 커널레벨스레드다 라고 말씀하시는분들도 계시는데 자세히 조사해본 결과 pthread..
Interrupt하드웨어 인터럽트(비동기적)CPU외 다른 장치에서 인터럽트를 발생시키는 경우 소프트웨어 인터럽트(동기적)프로그램에서 필요하여 인터럽트를 발생시키는 경우대표적으로 System call에 의해서 발생하는 인터럽트가 있다. ExceptionCPU안에서 인터럽트를 발생시키는 경우Exception의 종류로는 trap, falut, abort가 있다. Trap현재 실행되고 있는 명령어가 다시 실행될 필요가 없을 때, trap 복귀 후 다음 명령어를 수행한다. Faultfault 명령이 끝나면 fault를 발생시킨 명령을 다시 재실행한다. abort복귀하지 않고 프로세스를 종료시킨다.
Input/Output주소 할당 방법1) Separate I/O, Memory space말 그대로 분리되어 있다.할당되는 주소가 따로따로 있다.특별한 명령어를 사용 2) Memory-mapped I/O메모리에 한 부분에 차지한다.일반적인 명령어를 이용하여 Access 할 수 있다. 장점- 특별한 명령어가 필요 없다.- 메모리 Protection을 그대로 사용 가능- 다른 일반 명령어도 사용 가능- 하이레벨 언어에서도 access 명령어를 코딩할 수 있다. 단점- Cache에 캐싱되지 않도록 해줘야한다.(왜냐하면 실제 저장된 값이 필요하므로 직접 접근해야 한다.)(일반적으로 MMU에 포함된 기능이다.)- 메모리 모듈이 위 방법을 알고 있어야 한다. 3) Hybrid1), 2) 둘다 가지는 방법 DMA(Di..
Deadlock교착 상태란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.멀티 프로그래밍 환경에서 한정된 자원을 사용하려고 서로 경쟁하는 상황이 발생어떤 프로세스가 자원을 요청 했을 때 그 시각에 그 자원을 사용할 수 없는 상황이 발생할 수 있고, 그 때는 프로세스가 대기 상태로 들어간다.대기 상태로 들어간 프로세스들이 실행 상태로 변경 될 수 없을 때 이러한 상황을 교착 상태라 한다. 교착상태 조건교착 상태는 한 시스템 내에서 다음의 4가지 조건이 동시에 성립 할 때 발생따라서, 아래의 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 교착 상태를 해결 가능 1) 상호배제(Mutual exclusion)2) 점유대기(H..
TRIM 컴퓨팅에서 운영체제가 어느 블록의 데이터가 더 이상 사용되지 않고 내부적으로 삭제될 수 있는지를 SSD에 알려주는 명령어하드 드라이브와 상당히 달라 운영체제가 삭제와 포맷과 같은 작업을 관리하는 일반적인 방식이 SSD의 예기치 않은 쓰기 성능 저하로 이어졌다. TRIM은 차후 쓰기 속도를 상당히 떨어뜨리는 쓰레기 수집 오버헤드를 SSD가 미리 관리할 수 있게 한다.
OS 스케줄링스케줄링의 목적은 CPU를 효율적으로 사용하기 위한 정책 종류 2가지1) 비 선점(Non-Preemptive) 스케줄링이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법- 프로세스 응답시간의 예측이 용이하며, banch 시스템에 적합하다.- 중요하지 않은 작업을 기다리는 경우가 발생- FCFS, SJF, 우선순위, HRN, Deadline 등의 알고리즘 존재 2) 선점(Preemptive) 스케줄링이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 있는 스케줄링 기법- 우선순위가 높은 프로세스를 빨리 처리할 수 있다.- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클락이 필요하다.- Round Robin, SRT, 선점 우선순위, 다단계..
OS 기초 Multiprogramming메모리에 여러가지 job을 적재하여 실행Spooling 기법 : 바로 새로운 잡을 읽어서 빈 메모리 영역에 적재 실행 TimesharingTimeslicing 기법을 사용하여 interactive 하다.(즉 나만 쓰고 있는 착각이 들게 한다.) System Call 과정1. trap 명령에 인터럽트를 발생시키며 이것에 의해서 kernel로 진입(이 때 해당 trap 명령이 무엇인지 정보를 주어야함)2. kernel 내 IDT(Interrupt Descriptor Table)에서 해당하는 시스템콜 함수 주소를3. 시스템콜 핸들러를 실행시킨다.4. 끝나고 난 뒤 스케쥴링 된다면 복귀 한다. PCBProcess Control Block 또는 Process Table프로세..
Process실행 중인 Program에 대한 인스턴스운영체제가 관리하는 실행 단위운영체제로부터 주소공간, 파일, 메모리 등을 할당받는다. Thread한 프로세스 내에서 동작되는 여러 실행의 흐름, 실행 시 main 스레드는 기본으로 생김프로세스 내에서의 작업 단위프로세스 내의 주소공간이나 자원들을 공유하면서 실행프로세스는 자신만의 고유 공간과 자원을 할당 받아 사용하는데 비해 스레드는 다른 스레드와 공간과 자원을 공유하여 사용한다.스택영역은 스레드마다 고유공간이 존재한다.
Page 교체 알고리즘 Page Fault 발생시 가상기억장치(CPU)의 필요한 페이지를 주기억장치(RAM)에 적재해야하는데 있어 모든 페이지 프레임이 사용 중이면 어떤 페이지 프레임을 선택하여 교체 대상으로 할지 결정하는 기법 1) OPTOptimal replacement - 최적교체미래에 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법이것보다 더 좋은 알고리즘은 존재하지 않으며, 미래를 예측해야한다는 점에서 현실성이 없다. 2) FIFOFirst In First Out가장 먼저 들어와 오랫동안 있었던 페이지를 교체하는 기법원형 큐 형식으로 head가 가르키는 곳을 replace하면 된다. # 이상현상이 존재 : 물리 메모리의 크기를 키운다고 해서 꼭 page fault가 감소하는 것은 아니다. 3..
File SystemsOS가 보는 구조 : 디스크를 고정된 크기의 블록의 선형 시퀀스로 본다.어떻게 관리할 것인가? File데이터 저장하는 것을 화일이라고 한다. File Access 2가지 방법Sequential accessread, write를 쭉 한다.Random access지정된 곳으로 간다. File System Implementation1) Contiguous Allocation연속되게 할당한다.read시 매우 성능이 좋다.쓰기를 하지 않는 CD-ROM에서 자주 사용내부 외부 단편화 발생한다. 2) Linked List Allocation모든 블락을 사용 가능외부 단편화 없음하지만 매우 느리다.(디스크의 정보를 가지고 다음 list로 가야하므로) FAT(File Allocation Table)..