목록운영체제 (30)
내 잡다한 노트
프로세스간에 자원들의 정보를 알려주기 위해 서로 통신을 한다. 통신의 종류로는 내부 데이터 통신, 프로세스 간 데이터 통신, 네트워크를 이용한 통신이 존재한다. 내부데이터는 한 프로세스에서 2개 이상의 스레드가 존재할 때 스레드끼리 통신을 하는 경우를 말한다. 내부 데이터는 보통 전역변수와 파일 방식을 사용하고 프로세스 간에는 파일과 파이프, 네트워크를 이용할 때는 소켓을 활용한다. 즉, 통신의 방식에는 전역변수, 파일, 파이프, 소켓등이 있다. 통신 방향에 따른 분류 단방향통신 : 한쪽 방향으로만 통신할 수 있는 통신. 예로 전역변수와 파일이 있다. 양방향통신 : 양쪽 방향으로 통신가능. 소켓이 그렇다. 반양방향통신 : 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만..
인터럽트는 여러가지 이유로 발생한다. 프로세스가 입출력때문에 대기상태로 가서 완료가 되면 인터럽트 신호를 보낼 수도 있고 컴퓨터에 오류가 발생해 오류 처리하라고 인터럽트 신호를 보낼 수도 있다. 동기적 인터럽트 프로세스가 실행 중인 명령어로 인해 발생한다. 사용자 인터럽트라고도 한다. 사용자가 실행하다가 발생하는 인터럽트이다. 비동기적 인터럽트 하드웨어의 오류로 발생하는 인터럽트를 뜻한다. 인터럽트는 각각의 번호가 있고 번호마다 인터럽트가 발생 시 핸들링하는 함수들이 존재한다. 인터럽트를 처리할 땐 인터럽트 벡터라는 자료구조가 존재해 벡터에서 한꺼번에 인터럽트를 묶어서 처리한다. 이 벡터에는 여러개의 인터럽트가 번호와 핸들링되는 함수를 가진채로 존재하고 해당 번호의 인터럽트가 발생하면 1을 증가시키는 방..
준비 상태의 다중 큐 우선순위에 따라 여러가지 큐가 존재하고 그 큐에 프로세스 제어 블록을 넣어 놓는다. 고정 우선순위 방식 프로세스를 처음 우선순위를 정할 때 그 우선순위가 계속 고정적으로 변하지 않는 방식을 뜻한다. 작업 효율이 떨어진다. 변동 우선순위 방식 프로세스를 실행하는 도중에 다른 프로세스와의 관계나 여러가지 이유로 우선순위를 바꾸는 방식을 뜻한다. 낮은 우선순위의 프로세스가 중요한 자원을 할당하고 있다면 그 프로세스가 실행이 끝나야 다른 프로세스들이 그 자원을 쓸 수 있게 된다. 하지만 우선순위가 낮아 빨리 처리할 수가 없어지니 우선순위를 높여 빠르게 실행시켜버리는 것을 반전 우선순위라고 한다. 대기 상태의 다중 큐 대기 상태는 입출력때문에 가다보니 다양한 입출력에 따라 여러가지 큐를 둬서..
선점형 스케줄링 프로세스가 진행 도중에(CPU를 할당 받아) 운영체제가 중지 시킬 수 있는 스케줄링 방식 대표적인 예로는 인터럽트가 있다. 현대의 시분할 시스템에 사용이 된다. 단점으로는 문맥 교환의 오버헤드가 많다. 비선점형 스케줄링 프로세스가 진행이 되면 운영체제는 중지 시킬 수 없는 스케줄링 방식 과거에 많이 쓰였던 방식이다. 중지가 되지 않아 시간이 긴 프로세스가 실행되면 중지할 수가 없어 전체적인 처리 효율이 낮아진다. 프로세스 우선순위 우선순위가 높다는 것은 더 빨리 자주 실행된다는 것이다. 커널 프로세스와 사용자 프로세스간의 우선순위 커널 프로세스는 자원과 관련된 중요한 프로세스이기 때문에 두 개의 프로세스를 실행하게 되면 커널 프로세스의 우선순위가 높아 먼저 처리가 된다. 전면 프로세스와 ..
스케줄링 프로세스의 상태를 변경하고 프로세스가 작동하는 시간인 타임슬라이스를 정해 효율적으로 작동하게끔 돕는다. CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 한다. 고수준 스케줄링 시스템의 전체적인 통제를 함. 작업 스케줄링이라고 한다. 시스템 내의 전체 작업 수를 조절한다. 어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정한다. 중간 수준 스케줄링 고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링이다. 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절한다 일부를 보류 상태로 보내는 식으로 과부하를 막는다. 저수준 스케줄링 프로세스 단계에서 배운 CPU 스케줄링은 이 단계에 해당한다. 스케줄링의 목적 공평성 효율성 안정성 확장성 반응 시간 보장 무한 연기 방지
스레드 CPU가 작업을 할 때 프로세스가 CPU 스케쥴러에 선택받고 스케쥴러는 CPU에게 전달하는 일의 단위를 스레드라 한다. CPU는 스레드의 단위로 일을 한다. CPU에서 처리하는 작업의 단위. 프로세스와 스레드 프로세스는 운영체제에서의 작업의 단위이고 스레드는 CPU에서의 작업의 단위이다. 프로세스끼리는 약하게 연결되어 있어 서로 영향을 크게 받지 않지만 스레드는 강하게 연결되어 있어 영향을 크게 받는다. 멀티스레드 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 기법. 멀티태스킹 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법. 이런 시스템을 시분할 시스템이라 한다. 멀티 프로세싱 CPU를 여러개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경...
프로세스의 구조 코드 영역, 데이터 영역, 스택 영역이 있다. 힙 영역이란것도 있다. 코드영역과 데이터 영역은 정적인 영역이고, 스택 영역과 힙 영역은 동적인 영역이다. 코드 영역은 읽기 밖에 안되고 수정할 수 없다. 데이터 영역은 읽고 쓰기가 가능하다. 스택 영역은 a함수가 b함수를 호출할 때 b함수가 끝나면 a 함수로 다시 돌아가야 하는데 그때 a의 메모리 주소 정보와 b 함수로 보내는 파라미터들을 보관하는 영역이라고 한다. fork() 프로세스가 자식 프로세스를 만드는 것이다. 어떻게 만드냐면 그대로 복사를 한다. 하지만 바뀌는 정보도 있다. 프로세스 구분자와 메모리 관련 정보, 부모 프로세스 구분자와 자식 프로세스 구분자가 그렇다. 부모와 자식 관계로 만들면 부모 프로세스가 자식 프로세스의 자원을..
프로세스 제어 블록(PCB) 이 블록에는 프로세스들의 정보가 담겨있다. 첫 번째 블록에는 포인터가 담겨있다. 이걸 통해 준비큐에서 빠르게 찾을 수 있다. 또한 PID 프로세스 구분자와 프로세스 우선순위, 프로세스 상태, 메모리 관리 정보, 여러 레지스터들의 정보, 프로그램 카운터, 부모, 자식 PID 등등이 존재한다. 프로세스 구분자는 프로세스를 구분하기 위한 번호이다. 프로세스 우선순위는 CPU 스케쥴링이 우선순위대로 선택하도록 하기 위한 것. 메모리 관리 정보는 프로세스가 메모리 어디에 있는지 나타내는 메모리 정보와 한계 레지스터와 경계레지스터 값도 들어간다. 문맥교환 프로세스들이 서로 상태가 바뀔 때 그 새로운 환경을 만드는 과정 실행상태의 프로세스가 완료 상태로 가야하고, 그 자리에 준비 상태의 ..