본문 바로가기
반응형

운영체제6

Web Server 실습 +Dispatcher 사용 다중스레드 웹 서버에서 작업을 분배받는 과정을 producer-consumer 모델로 만 들어 본다. Dispatcher thread는 작업을 worker thread들에게 배분하며, 이때 한 개의 원형 큐가 버퍼로써 사용되게 설계해볼 것이다. Dispatcher란? CPU의 제어권을 STS(Short-Term Scheduling)에 의하여 선택된 Process에게 넘겨주는 모듈을 말한다. 인터럽트 또는 시스템 호출의 결과로 커널 모드에서 제어를 받는다. 디스패처는 모든 프로세스 전환 중에 호출되므로 가능한 한 빨라야한다. 요구사항 1. Dispatcher는 producer로써, 원형 큐(버퍼)에 작업 내용을 기록한다. 2. Worker는 consumer로써, 원형 큐(버퍼)로부터 작업 내용을 읽는다. .. 2020. 10. 2.
[운영체제] Race Condition, Mutual Exclusive(상호배제) 실습 Race Condition이란? 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다. Race의 뜻 그대로, 간단히 말하면 경쟁하는 상태, 즉 두 개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다. Mutual Exclusive이란? 상호 배제라는 뜻으로 는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계 구역(critical section)으로 불리는 코드 영역에 의해 구현된다. 공유 불가능한 자원의 예로는 동시에 실행되고 있는 프로그램간의 통신에 사용되는 비트 단위의 깃.. 2020. 10. 2.
[운영체제] 스레드(Thread) + 실습을 통해 직접 깨우치기! 프로세스와의 차이점? 일단 실습을 해보기전에! 스레드(Thread)는 무슨 역할을 하고 무슨 기능이있는지 간단하게 살펴보겠습니다. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 그러면 전에 공부했던 프로세스와 차이점은 무엇일까? 스레드와 프로세스의 차이점 프로세스는 서로 완벽히 독립적인 공간을 가진다. 각자가 각자의 스택과 데이터 영역을 가지고, 보호받는다. 프로세스는 시작할 때 운영체제에서 PCB와 메모리 공간을 할당받고 초기화하는 과정이 필요하다. 다른 프로세스의 영역을 들여다볼 수.. 2020. 9. 28.
[운영체제] 프로세스 상태 +실습을 통해 직접 깨우치기! 이번에는 프로세스 상태에 대한 공부를 해볼 것이다. 프로세스 상태는 new, ready, running, waiting, terminated로 나눠질수있습니다. 이런식의 로직을 가지고있다. 리눅스 기반에 운영체제에서 공부했습니다. running.c 코드 #include int main() { do { } while (1); } 아래와 같은 명령어를 사용해보자. gcc -o running running.c ./running & ps -l 1) ps -l 명령을 수행하면 프로세스의 상태는 어떻게 표시되는가? - R로 표기된다. 2) ps -l 명령을 반복하여 수행해보면 표시는 바뀌는가, 그렇지 않은가? - 바뀌지않는다. 3) 이 표시가 의미하는 프로세스의 상태는 무엇인가? - 실행중 또는 실행가능 (실행 큐.. 2020. 9. 28.
[운영체제] fork 실습 -2 fork가 어떻게 프로세싱 되는지 실습을 해보았다. hello.c 파일 /* * A file executed by child process * */ #include #include int main(void) { do { printf("I'm hello. I'm alive!\n"); sleep(5); } while (1); } fork3.c 소스코드 및 설명 /* * Fork a child process and execute a new program code. * */ #include #include #include #include #include int main(void) { int pid, status; char *arg[] = { "./hello", NULL } ; charch; pid = fork(.. 2020. 9. 27.
1. 컴퓨터 시스템의 개요 컴퓨터 시스템의 4대 기능 1) 입력 2) 처리 3) 저장 4 출력 중앙처리 장치(CPU) 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치를 말한다. CPU와 마이크로프로세서의 차이점? CPU는 컴퓨터 시스템의 논리적 구성 요소이고, 마이크로프로세서는 CPU를 집접회로 형태로 만든 물리적 구성 요소이다. 레지스터(register) 데이터를 처리하는 동안 사용할 값이나 연산의 중간 결과를 일시적으로 기억하는 고속 기억장치 CPU 내부에는 누산기, 명령어 레지스터 등... 다양한 레지스터가 있다. 기억장치 컴퓨터 시스템에 의해 처리될 프로그램과 데이터를 저장하기 위한 장치 기억장치 계층구조 시스템버스(System bus) 데이터버스->(워드), 주소버스->(총 메모리 량) , 제어버.. 2020. 9. 7.
반응형