프로세스의 스케줄링 일반 os 와 리얼타임 os의 차이점 스케쥴러가 일반 os 와 리얼타임 os를 구분 짓는다. 스케쥴러가 타임슬라이스 기준으로 프로세스 실행을 이동시킨다. 리얼타임os : 타임슬라이스가 짧다. 실시간, 바로바로 응답. 응답성이 좋다. 일반 os : 타임슬라이스가 길다. 그래서 응답성이 느리다. 선점형 os : 다른 프로세스가 실행중이면 그 프로세스를 밀어내고, 실행을 하는 방식이다. (스케쥴러가 일을 훨씬 많이 한다.) 비선점형 os : 다른 프로세스가 실행중이면, 그 프로세스를 밀어내지 않고, 기다렸다가 실행을 하는 방식이다. (스케줄러가 하는 선점형 os보다 하는 일이 적다.) 스케줄링 알고리즘 우선순위가 동일한 프로세스에는 평등원칙을 적용한다. 우선순위가 높은 프로세스에게 특권원칙..
스택이란 정의 : 스택은 ‘먼저 들어간 것이 나중에 나오는 자료구조’로써 초코볼이 담겨있는 통에 비유할 수 있다. 스택의 기본 연산 초코볼 통에 초코볼을 넣는다. (push) 초코볼 통에서 초코볼을 꺼낸다. (pop) 이번에 꺼낼 초코볼의 색이 무엇인지 통 안을 들여다 본다. (peek) 스택의 ADT 정의 스택의 배열기반 구현 인덱스가 0인 위치를 스택의 바닥으로 정의해야 배열 길이에 상관없이 바닥의 인덱스 값이 동일해진다. - 인덱스 0의 배열 요소가 '스택의 바닥으로 정의 되었다. - 마지막에 저장된 데이터의 위치를 기억해야 한다. (Top의 위치 중요) push : Top을 위로 한칸 올리고(+1), Top이 가리키는 위치에 데이터 저장 (선 증가, 후 저장) pop : Top이 가리키는 데이터를..
큐의 정의 큐는 먼저들어간 데이터가 먼저 나오고, 나중에 나온 데이터가 나중에 나오는 자료구조이다. 큐는 운영체제 관점에서 보면 프로세스나 스레드의 관리에 활용이 되는 자료구조이다. 이렇듯 운영체제의 구현에도 자료구조가 사용된다. 따라서 운영체제의 이해를 위해서는 자료구조에 대한 이해가 선행되어야 한다. 큐의 ADT 정의 ADT를 대상으로 배열기반의 큐 또는 연결리스트 기반의 큐를 구현할 수 있다. 원형큐의 구조 아래와 같은상황은 F 와 R이 같은 위치를 가리키는 상태가 텅빈 상태를 나타낸다. enqueue 연산시, R이 가리키는 위치를 한칸 이동시킨 다음에, R이 가리키는 위치에 데이터를 저장한다. dequeue연산시, F가 가리키는 위치를 한칸 이동 시킨 다음에, F가 가리키는 위치에 저장된 데이터를..
프로세스 환경 변수 프로세스별로 메모리 블록이 있다. 부모프로세스는 자신의 환경변수를 자식프로세스에게 상속시켜줄수 있다. 핸들 테이블 생성 순서 프로세스가 메일 슬롯을 생성하면 메일슬롯의 정보가 들어있는 커널오브젝트가 생성이 된다. os는 메일 슬롯 커널 오브젝트의 핸들값과 주소값을 프로세스의 핸들 테이블에 넘겨준다. 부모프로세스의 핸들테이블의 정보가 자식 프로세스에게 상속가능하다. 이때, 자식 프로세스에게 상속이 될려면, 핸들의 상속여부가 Y여야 한다. 핸들의 상속여부 Y 예제 핸들의 상속과 UC 부모의 핸들값을 자식에게 상속하고, 자식이 상속 받으면 부모 프로세스의 핸들 커널 오브젝트의 UC는 1씩 증가한다. 예제 0x1700번지에 메일슬롯을 연결하기 위한 커넥터 커널 오브젝트가 생성이 되었고, 이 ..
프로세스간 통신 IPC 프로세스간 통신은 메모리 공유다. 왜냐면, a 프로세스가 공유되는 메모리에 데이터를 올려놓고 b프로세스가 가져가는 메커니즘이다. 이런 매커니즘을 통신이라고도 한다. 하지만 운영체제에서 커널이 아래 그림 처럼 두 프로세스의 메모리를 분리해놓는다. 그래서 서로 접근이 불가능하다.(안정성 문제) 어떻게 공유 메모리로 접근을 하나? 그 해결책은 os 가 제공해준다. IPC 기법이 그 중 하나다. 메일 슬롯의 동작원리 리시브 프로세스가 데이터를 받고 싶을때, 시스템 콜을 통해서 우체통을 하나 만든다. os가 만든다. 그럼 우체통이 생성되고 우체통 주소가 생성된다. 샌더 프로세스는 우체통 주소를 가지고 우체통에 데이터를 집어 넣는다. (시스템콜 함수를 통해서 os가 넣어준다.) 리시브 프로세..
커널오브젝트와 핸들의 종속관계 1 “커널 오브젝트는 os에 종속적이다.” 커널 오브젝트는 프로세스에 종속적인것이 아니라, 운영체제에 종속적인 관계로 커널 오브젝트의 소멸 시점은 운영체제에 의해 결정된다. 프로세스 A가 생성되면 프로세스 A의 커널 오브젝트(핸들값 3)가 생성되고 프로세스 A만의 핸들 테이블이 생성된다. 이 핸들 테이블에는 핸들값 3이 등록된다. 이 핸들값 3은 A의 커널 오브젝트를 가리킨다. 그리고 커널 오브젝트의 UC(접근가능한 카운터)는 1이 증가된다. 프로세스 A가 프로세스 B를 생성한다. 프로세스 B의 커널 오브젝트가 생성되고 핸들값 3이 생성된다. 이때 UC는 2가 된다. 프로세스 A에 의해 B가 생성되었기 때문에 프로세스 A 도 프로세스 B에 접근가능하다. 내부적으로는 프로세스..