본문 바로가기

운영체제3

Critical Section Problem Atomic instructions원자와 같은 명령어. 한번 시작을 하면 끝을 내야하는 명령어. 실행 도중에는 멈추지 않는다. Spin lock에서 숫자를 확인하고, 설정하는 그 사이에 switch가 발생하는데, 원자 명령어는 이것을 하나의 명령어로 구현하면 switch가 발생하지 않는다. all or nothing이라는 이름으로도 불린다. Test-and Set instructionbool test_and_set(bool *flag) { bool old = *flag; *flag = True; return old;}lock = falserepeat while test-and_set(lock) do no-op; ciritical section; lock - false; .. 2024. 3. 27.
Threads and Process 커널은 커널 단위로 CPU 스케줄링을 처리한다. 프로세스를 하는 것에 비해서 성능이 좋아진다. 그러나 쓰레드는 sys.call로 구현되야 하기 때문에 OS가 필연적으로 개입되게 된다. 그래서 유저 레벨 쓰레드를 사용하기로 결정유저 레벨 쓰레드는 PC, 레지스터, 스택, 그리고 작은 쓰레드 블럭으로 만들어서 가볍고 빠르다. 절차적 호출을 향해 쓰레드의 생성, 전환, 씽크를 맞춘다. 커널이 관여하지 않기 때문에 속도가 빠르다.유저 레벨 쓰레드의 단점OS한테 맡기기 때문에 OS가 잘못된 결정을 할 수가 있다.쓰레드가 I/O를 초기화 할 때 프로세스가 막을 수 있다. 심지어 쓰레드가 실행중일 때도 마찬가지이다.POSIX(Portable Operating System Interface for UNIX)쓰레드의 부.. 2024. 3. 25.
Fork & exec 프로그램을 시작하기 보다, 오래된 프로그램을 분기하는 것은 어떨까?exec() - System callint exec(char *prog, char **argv);// 변신할 프로그램 정보, 변신하기 위해 필요한 정보6가지의 상황에 따른 사용법이 존재한다.exec() 호출 시현재 프로세스 중단인자로 들어온 prog(프로그램)을 address space에 적재PCB를 ready queue에 등록새로운 프로세스 생성 X, 기존 프로세스 변신shell에서 exec csh를 사용하면 어떻게 되나?일반적인 csh$csh - C shell로 변경$ls%exit - Born shell로 돌아옴exec csh()$exec csh%ls%exitterminated...Born shell로 돌아오지 않는다. while(1).. 2024. 3. 18.