목록School/운영 체제 (19)
Keep going

어떤 프로그램이 임계 구역에서 실행하고 있다. = 공유 데이터를 건드리는 일을 하고 있기 때문에 다른 프로젝트가 공유 데이터를 건드리는 임계 구역에서 실행하고 있으면 안된다. 어느 한 순간에는 임계구역에 하나의 프로세스만 들어가 있어야 한다. peterson's 방법 - 속도가 느리고 현대 컴퓨터에서 사용할 수 없는 솔루션 이라는 문제가 있기 때문에 하드웨어 자원을 받아서 임계 구역 해결하는 기법들 알아볼 필요가 있다. 현재 컴퓨터는 실행속도를 빠르게 하기 위해 컴파일러가 필요하면 명령어 실행 순서를 바꾸기도 한다. Peterson 방법이 명령어가 재배치가 되면 상호 배제를 보장하지 못한다. → 현재 컴퓨터에는 Peterson 방법 맞지 않다. 하드웨어가 지원하는 기능들 memory barrier(Fen..
결정적 모델링, 큐잉 모델, Little's Fomula, Simulations 결정적 모델링 상황결정 후 상황을 이용해서 방법 A, B ,C 에 대한 waiting average 값들을 계산 단점 : 상황이 변하는데 한 상황가지고 어떤 알고리즘에도 좋다 이야기하기 어렵다. 수학적분석은 더 어려움 큐잉 모델 시스템에 여러가지 큐 작업들이 큐에 들어와서 다른 큐로 갔다가 또 다른 큐로 갔다가 움직이는 상황의 큐 네트워크 있고 작업들이 큐에 들어와서 큐 사이 움직이는 모델 가정하기를 큐에 들어오는 속도 , 큐에 들어오는 작업 확률 분포가 있다. 전체에서 기다리는 것 몇개인지, 평균시간이 얼마나 걸리는지 하는 것들을 계산해 낼 수 있다. 작업 도착 순서, 대기 시간에 대한 확률 분포들을 가정하고 난 다음 큐잉..

실시간 스케줄링 어떤 사건이 일어나면 언제까지 처리가 되어야 된다는 시간에 대한 제약조건 일반적으로 사용하고 있는 시스템에 RealTime Schedulling 기능을 더할려고 하니까 문제 생긴다. (어려워짐) Real Time 전용 → 문제 쉬움 Soft realtime-system 이 시스템에서는 real time task 와 Non real time task 들이 혼재되어 있는 상황에서 Real time 애플리케이션에 대해서 Real time process가 들어오면 우선순위를 더 주긴주지만 deadline 에 맞춰서 끝내줄거라는 보장이 없는 시스템을 말한다. (다른애들보다 우선순위를 주지만 너가 언제까지 실행이 된다 보장 못할 경우) Hard realtime system 어떤 process의 de..

Priority Scheduling 각 프로세스에 우선순위 지정 - 우선순위를 부여하는 것 각 Process에 우선순위가 부여되어 있으면 cpu는 가장 우선순위가 높은 프로세스를 실행하게 된다. 물론 우선순위 표현할 때 높은 정수를 높게 하든, 낮은 점수를 높게 하든 설정할 수 있는데 낮은 정수가 더 높은 우선순위 나타내는 것이 일반적이다. 선점, 비선점 둘다 가능하다. SJF는 우선순위 스케줄링의 일종이다. burst 길어지면 우선순위 낮아지고, burst 짧아지면 우선순위 높아진다. 우선순위 스케줄링 문제점 - Starvation(기아) 현상 일어날 수 있다. 우선순위가 5인 c가 없는데 B(3)인 것 먼저 실행해서 대기. 또 더 높은 우선순위 가진 process 들어와서 무한정 대기하는 현상 낮은 ..

CPU 스케줄링 기본개념 실행과정을 보게 되면 cpu burst → I/O burst 번갈아면서 반복하다 cpu burst로 프로그램 종료 메모리에 실행되는 program 1개 밖에 없다면 cpu가 cpu burst로 막 실행하다 I/O 일어나면 CPU 기다릴 때 할일 없어진다. 위의 상황을 방지하기 위해 프로그램 여러개를 main memory에 갖다두고 A 프로그램이 I/O 하고 있으면 CPU 뺏고 B 프로그램한테 줘서 cpu burst 되도록 하게 한다. (multi programming 개념 → cpu 활용도 ↑) cpu를 기다리고 있는 레디큐에 여러개의 프로세스가 있다고 하면 어떤애한테 cpu를 줄것인가 라는 것을 결정하는 것이 바로 cpu 스케줄러가 하는일이다. ex) process A가 cpu..

스레드 이슈 fork(), exec() 스레드 여러 개 있을 때 어떤 한 스레드가 fork를 하면 새 process 에는 fork 한 스레드 1개만 들어가야 되냐, 모든 스레드가 다 복사되어야 하냐? (쓰레드 1개면 문제 x → 똑같은 시점으로 복사) Signal handling p1, p2 있을 때 p1 p2에게 어떤 사건 일어났다고 알려주기 위해 시그널을 보낸다. (시그널을 일반적으로 정수) (시그널이 발생했다는 걸 알려주고 시그널 몇번이다) 에 따라서 어떤 일이 일어났다 알려주는 것을 signal system p2 스레드 여러 개 있다면 어느 누구한테 signal이 가야 되는지 signal 누가 처리할지에 대한 문제 발생 Thread cancellation (스레드 중단) p1 프로세스가 여러 개 ..
스레드 라이브러리 구현 두 가지 방법 user mode에서 스레드 라이브러리 구현하는 방법 운영체제 내부에서 구현하는 방법 (kernel 모드에서 돌아감) 스레드 라이브러리 종류 POSIX windows java Implicit pthreads 유저 레벨, 커널 레벨 둘다 제공 a posix api - 스레드 지원하려면 다음과 같음 메서드들 제공해야 한다고 명시, 어떻게 구현할 건지 지정하는 것은 아님 unix systems에서 사용 java JVM이 OS가 제공하는 스레드 기능 구현 Runnable 인터페이스 내부에 run 메서드 → 스레드 생성 Implicit Threading 직접 만드는 것이 아니라 Runtime, Compiler가 만들어주고 암묵적으로 스레드 만들어서 실행하라고 명시하는 것 스레..

Motivation (왜 multithreaded programming 하는가?) 하나의 프로세스가 여러 개 실행흐름을 가지는 것. 프로그램안의 실행흐름을 스레드라고 한다. 요즘 응용 프로그래밍들은 하나의 프로세스가 여러개 실행흐름 가지는 multithreaded programming 경우 많다. 장점 한 스레드는 update display, 다른 스레드는 데이터 가져오기, 스펠링 체크하는 것처럼 다양한 일을 하는 스레드들로 하나의 응용 프로그램이 구성될 수 있다. (multithread 예) 코드를 간단하게 할 수 있다. 각자 하는 일을 하나의 스레드로 만들어서 처리하게 함으로써 전체 프로그램이 하나에 몰려있지 않게 함 여러 thread가 돌아감으로써 효율성 개선할 수 있다. 또한 운영체제 자체도 여러..