💻CS
[OS] 9. Process Synchronization and Mutual Exclusion 2
지난 강의에서는 상호 배제를 구현하기 위한 노력들을 살펴 봤었다. 그 이후에 어떠한 소프트웨어적인 해결책을 내놓았는지 하나씩 살펴보자. Dekker's algorithm 이 알고리즘은 프로세스가 두 개일 때, Mutual Exclusion을 보장하는 최초의 알고리즘이다. 앞의 버전 0, 1보다 더 발전한 모양으로, 해당 문제들을 처음으로 해결해냈다. 진행되는 플로우를 살펴보자. 먼저 P0이 작업을 하려고 flag를 true로 바꾸었다고 해보자. 이 때 flag[1]에 따라 작업을 수행할 수 있는지 여부가 정해지는 데, P1도 flag를 true로 전환 시킨 상태라고 가정해보자. 그렇다면 while문 안으로 들어가서 현재 turn을 통해 누구의 차례인지 알아낼 수 있다. turn이 1이라면 P1의 차례이기..
[OS] 8. Process Synchronization and Mutual Exclusion 1
Process Synchronizatiton (동기화) 동기화라는 말을 생각해보면, 하나의 프로세스를 대상으로 하는 행위는 아닐 것이라는 생각이 들 것이다. 동기화라는 말의 사전적 의미를 먼저 들여다보자. 동기화(同期化, synchronization)는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다. 여러 사건, 즉 컴퓨터에서는 "여러 프로세스"에 대한 행위가 되는 것이다. 이에 여러 개의 프로세스가 존재하는 다중 프로그래밍 시스템 상에서 필요로 하는 것이 동기화이다. 왜냐하면 각 프로세스들은 서로 독립적으로 동작하는데, 만약 공유 자원이나 데이터에 동시에 접근하게 되면 이 때 문제가 발생한다. 만약 자원 A를 P1(=프로세스)과 P2이 동시에 접근한다고 하면, 작업 도중에 값이..
[Network] 네트워크 계층 3
DHCP (Dynamic Host Configuration Protocol) 호스트 정보(IP, Mask, Router, DNS 등)를 동적으로 세팅해주는 역할을 한다. 만약 DHCP가 아니라 수동으로 IP주소를 정해주게 된다면 정적으로 사전에 미리 정해줘야 할 것 이다. 예를 들어서 A 아파트에 입주자가 10,000명이라고 할 때, 수동으로 IP를 할당하려면 10,000개를 미리 정해줘야 한다. 하지만 DHCP는 동적으로 사용 중인 입주자를 대상으로만 할당해주기에 그 수를 더 효율적으로 사용할 수 있다. 즉, 네트워크에 접속했을 때 주소가 할당되며, 이후에 회수하여 IP주소의 재사용 또한 가능해진다. (주소를 잠시 렌탈해주는 것과 같은 느낌!) 1. DHCP discover 사용자 : 저기.. 저 새로..
[OS] 7. Process Scheduling 4
마지막으로 MLQ와 MFQ에 대해서 알아보자! MLQ (Multi-level Queue) 말 그대로 ready queue를 여러 개 가지는 방식이다. 이전의 스케줄링 방식들은 ready queue를 한 개만 가지고 우선순위를 두고 작업을 진행했었다. 작업(or 우선순위)별 별도의 ready queue를 가진다 최초 배정된 queue를 못 벗어남 (= 다른 queue로 이동 불가) 각각의 queue는 자신만의 스케줄링 기법을 사용한다. Queue와 queue 사이에는 "우선순위 기반"의 스케줄링 사용 (고정 우선순위, 동적 등등) 장점 중요한 작업에 대해서는 빠른 응답시간을 가진다. 단점 여러 개의 queue를 관리해줘야 하기에 스케줄링 overhead가 발생한다. 우선순위가 낮은 queue에서는 star..
[Network] 네트워크 계층 1, 2
Application Layer, Transport Layer 그 아래의 Network Layer에 대해 알아볼 것이다. 네트워크 레이어의 두 가지 핵심 기능 (feat. 라우터) 라우터는 패킷이 들어오면 목적지로 향하는 방향으로 전달하는게 핵심이다. 패킷의 헤더에 해당 정보가 있어 이를 분석하여 정보를 얻어낼 수 있다. forwarding : 들어온 패킷의 목적지 + 표(forwarding table)를 보고 매칭시켜서 알맞는 링크로 보낸다. routing : forwarding시 참조할 수 있는 forwarding table을 라우팅 알고리즘이 만드는 역할을 한다. 포워딩 테이블의 양이 너무 많다보니 주소 범위로 관리가 되어 있다. 예를 들어서 0 ~ 100부터는 0번, 101 ~ 200은 1번과 같..
[OS] 메모리 구조
메모리 구조 우리가 흔히 사용하는 프로그램들을 실행하려면 프로그램이 메모리(RAM) 위에 올라가야 한다. 또한 프로그램 내의 여러 변수를 저장하기 위한 메모리 공간이 필요한데 이 부분을 오늘 다뤄볼 것이다. 통상적으로 알고 있는 메모리 구조의 네 가지인, 코드(Code), 데이터(Data), 힙(Heap), 스택(Stack)에 대해서 하나하나 알아보자. Code 말 그대로 코드 영역은, 실행할 프로그램의 코드가 저장되는 장소이다. 텍스트 영역이라고도 하나, 주로 코드 영역이라고 부른다. 코드는 우리가 읽을 수 있는 형태가 아닌, 기계어로 저장된다. 또한 프로그램 실행에 필요한 코드들이기 때문에 프로그램 실행 ~ 끝까지 메모리에 존재한다. 그리고 코드 영역은 컴파일 타임에 결정되어 저장된다. 또한 프로그램..