본문 바로가기

OS/쉽게 배우는 운영체제23

프로세스 동기화 (2) 이번 단원은 코드가 많이나와 이해하는데 시간이 많이 필요했다. 이해를 하고 나니 매우 쉬운 내용이였고 다른 임계구역을 보호할 수 있는 방법을 여러가지 생각해봤지만 내가 생각했던 것들은 모두 여러가지 상황들로 인해 문제점이 많았다. 먼저 첫번째로 다루는 코드에 잠금확인을 2번 하는 것이다. P1 1. while(lock2==true); // lock2가 true이면(P2이 임계구역을 사용중이면) 무한 대기 3. lock1==true; // lock1을 true(잠금)로 설정 5. while(lock2==true); // 이중확인 > 무한잠금 //임계구역 lock1=false; lock1을 false(잠금해제)로 설정 P2 2. while(lock1==true); // lock1가 true이면(P1이 임계구.. 2022. 3. 6.
프로세스 동기화 (1) 최근 개강전 컴활 자격증을 따느라 블로그에 소홀했었던것 같다. 짧은 기간동안 되게 열심히 자격증 공부를 했음에도 불구하고 좋은 결과가 나와 뿌듯했다. 컴활 자격증에 대한 이야기는 자격증 카테고리에서 다루도록 하고 이번에 공부한 내용은 '프로세스의 통신'이다. 내가 1학년일때 아무 프로그램이나 만들어 오라는 과제를 받았었다. 한참 갈피를 못 찾고 고민하던 중 개발자 친구가 서버를 만든 후 '소켓'을 이용하여 클라이언트 PC와 통신을 할 수 있는 프로그램은 만들어 준 적이 있었다. 당시에는 정말 어려운 기술을 썼구나 라는 생각을 했었는데 지금 다시 보니 생각보다 쉽고 익숙한 내용이었다. OS를 끝내면 구글링을 통해 소켓에 대해 조금 더 알아보고 다시 그 프로그램을 만들 생각이다. 프로세스 간 통신 프로세스 .. 2022. 3. 3.
CPU 스케줄링 (2) 이번에 배운 내용은 'CPU의 사용시간'을 약수터의 물을 받는 시간이라고 생각하면 이해가 쉽다. 약수터에 여러 사람들이 모여있는데 그중에는 정수기에 넣을 물통을 들고 온 사람도 있을 것이고 물 한모금만 먹으러 온 사람도 있을 것이다. 정수기 통을 가져온 사람이 가장 빨리 와서 약수터에서 물을 받고 있으면 그 뒤로 도착한 많은 사람들은 그 사람이 끝나기만을 기다려야한다. 이렇게 빨리 온 순서대로 물을 받는 것을 FCFS 스케줄링 이라고 한다. 하지만 정수기 통을 가져온 사람 뒤에 물 한모금만 먹으러 온 사람이 있다고 생각해 보자. 정수기 통을 들고 온 사람이 물 한 모금만 먹으러 온 사람에게 순서를 양보해서 물을 먹고 자기는 나중에 받는 방법을 SJF 스케줄링이라고 한다. 이렇게 된다면 물이 많이 필요한 .. 2022. 2. 23.
CPU 스케줄링 (1) 먼저 저번 단원에서 CPU 스케줄러에 대해선 '어떤 프로세스를 CPU에게 할당하는지 정해주는 역할' 이라고만 배웠었다. 하지만 그 정해주는 일이 나름 여러 체계가 있었고 프로세스 사이의 어떠한 기준으로 우선순위를 매기는지 그 체계에 대해 다룬다. 나는 그동안 사용자의 입장으로만 컴퓨터를 바라봐 '사용자가 먼저 실행하는것이 당연히 가장 높은 우선순위를 배정받아 가장 먼저 되겠구나' 라는 생각을 가지고 있었는데 물론 그것도 맞지만 컴퓨터 내부적으로 애초부터 우선순위가 정해져 있는 프로세스도 있었다. 스케줄링의 개요 : 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 말한다. - 고수준 스케일링 : 시스템 내의 전체 작업 수를 조절하는 것 → 실행 가능한 프로세스의 총개수.. 2022. 2. 22.
프로세스 관리 (2) 이 단원을 공부하던 중 '스레드' 라는 것을 배웠다. 그런데 그 내용이 내가 전에 공부하던 책에서는 '모듈' 이라고 배웠었는데 같은 내용을 다른 용어로 배우니 점점 머리가 아파오기 시작했다. + 이전의 블로그를 찾아보니 모듈은 하나의 도구와 같은 개념이고 스레드는 모듈을 이용한 최소한의 작업인 것같다. ㄴ + 쏘공에서의 프로세스는 하나의 단계를 지칭하는 단어이고 여기서의 프로세스는 하나의 창? 으로 해석해야 하는 것 같다. 스레드 : 프로세스의 코드에 정의된 정차에 따라 CPU에 작업 요청을 하는 실행단위 - 프로세스와 스레드의 차이 : 프로세스는 서로 약하게 연결되어있지만 (객체지향) 스레드는 서로 강하게 연결되어 있다. (응집력) - 멀티테스크 : 여러 프로세스가 모여있는 것. 운영체제가 CPU에 작.. 2022. 2. 19.
프로세스 관리 (1) 프로세스는 저번 '소프트웨어 공학 에센셜' 에서도 다루었던 내용이다. 쏘공 공부를 하면서의 '프로세스'는 소프트웨어를 만드는데 필요한 하나의 작업으로 다루었다면 이 책에서의 '프로세스'는 더 크게 하나의 소프트웨어로 본다. 이 단원을 공부하면서 시분할시스템과 일괄처리시스템이 다시 한번 나오게 되는데 CPU를 2개 이상 넣을 수 있다면 시분할 시스템을 이용해 더 많은 프로세스를 동시에 처리 할 수 있지 않을까 라는 생각을 했다. 또한 init 가 프로세스의 첫 시작이라면 처음 컴퓨터를 부팅하고 운영체제라는 프로세스가 실행될 때 init이 생성되고 그 후에 다른 프로그램을 실행하면 init 이 생성이 될까라는 궁금증이 생겼다. 예를들어 롤이라는 프로그램을 실행했다면 롤이 실행이되며 init이 생성이 되나??.. 2022. 2. 18.