공부 학습 45

운영체제 CH7(10주차)

Synchronization Example Bounded-Buffer Reader-write dining philosopher Bounded-Buffer Problem n개의 버퍼가 각각 1개의 아이템을 가질 때 mutex Semaphore는 1로 초기화하는 binary Semaphore이고 full Semaphore(몇개의 방이 채워져있는가)와 empty Semaphore(몇개의 방이 비워져있는가)는 각각 0과 n으로 초기화하여 리소스의 개수 만큼 count하는 counting Semaphore이다. //Producer 공유 버퍼에 값 추가하기 while (true){ ... wait(empty);//만약 Semaphore에서 빈방 없이 0 이하이면 blocking 시킨다. wait(mutex);//이..

공부 학습 2021.05.04

네트워크 CH4 - Network Layer 2

IP addressing: CIDR CIDR: Classless InterDomain Routing 예전에는 IPv4 주소를 Subnet ID 8bit 8bit 8bit에 Host ID 8bit로 Class로 엄밀하게 나누어 IP주소를 구성하였다. 하지만 최근에는 따로 정해진 Class 없이 Subnet ID의 주소값의 자리수를 따로 구분하지않고 자른 후 A.B.C.D/x의 형태로 IP를 구성한다. 예를 들어 11001000 00010111 0010000 00000000 이라는 IP가 있을때 최근의 IP 주소에서는 앞에 24bit가 아닌 23bit만 Subnet ID 로 사용이 가능하다. 그러면 11001000 00010111 001000 | 0 00000000 에서 앞에 23를 사용해 왼쪽에서 부터 8..

공부 학습 2021.04.28

운영체제 CH6(9주차) -2

Bounded-waiting Mutual Exclusion with compare-and-swap CAS(compare-and-swap)을 사용하여 CS(Critical Section)에 순차적으로 들어가는 알고리즘 while (true){ waiting[i] = true;//다른 프로세스가 CS에 있으니 i는 가다려야한다. key =1; while(waiting[i] && key == 1)//waiting[i]가 False이면 누군가 CS에서 나왔음을 의미 key = compare_and_swap(&lock,0,1);//key는 lock의 현재 값으로서 key=1이면 누군가 CS에 있다는 뜻이다. Key=0일때까지 기다린다. waiting[i] = false; /*Critical Section*/ j ..

공부 학습 2021.04.28

네트워크 CH4 - Network Layer

Network Layer Tranport Layer에서 보내고자하는 Segmant를 Network Packet에 담아서 잘 전송 해주는 계층 이제부터는 내부 네트워크에 대해서 거론된다. End host는 네트워크 5계층이 모두 갖춰져 있지만 Louter은 network계층까지 밖에 없다. -> 오직 Packet을 전달하기 위해 특화된 기기 IP Packet의 header를 이해 할수 있는 계층이다. Per-router control panel Forwarding: 패킷을 받아서 목적지 까지 가기까지 바로 다음 라우터로 전달하는것 어떻게: Packet header에 있는 forwarding table을 Look up하여 entry를 찾아 설정하여 packet을 쏴줌 어떻게 Louter들은 forwardin..

공부 학습 2021.04.26

운영체제 CH6(9주차) -1

Synchronization Tool 프로세스는 병행적으로 실행되는데 그래서 언제든 다른 프로세서에 의해 inturrupt될 수 있음 만약 프로세서들이 Shared memory를 사용한다면 작업 도중에 inturrupt되어서 작업에 불일치성(inconsistency)가 생겨버리는 문제가 발생한다. 그래서 프로세서들이 순서대로 시행될수 있도록 보장하는 메커니즘이 데이터에 일치성을 유지하는데 요구 되어짐 producer-consumer problem 버퍼를 운용할때 버퍼가 빈 상태와 꽉찬 상태를 구분할수 없음 그래서 count 변수를 이용하여 한정 된버퍼에서 공간이 비었는지 꽉찼는지 구분할수 있음 //Producer while(true){ while(counter == BUFFER_SIZE){ ;/*Do n..

공부 학습 2021.04.26

운영체제 6주차

CPU Scheduling Basic Concept CPU Scheduling의 목적 : CPU의 이용률을 극대화하자 프로그램을 구동할때는 CPU와 IO를 번갈아 구동되는데, 대부분의 시간을 IO에서 보낸다. CPU에서 보내는 시간을 CPU burst라고 하고 IO에서 보내는 시간을 IO burst라고 한다. 대부분의 프로그램이 짧은 CPU burst를 가지고 있고 짧은 구간동안 앞쪽에서 몰리게 되어 있다. CPU Scheduler는 프로세스의 Ready Queue를 통해 어떤 프로세스를 할당할지 결정한다. CPU Scheduler life cycle 비선점 알고리즘(nonpreemptive): 점유가 되어 있지 않은 채로 종료과 waiting상태가 아니면 CPU를 놓치지 않음 선점알고리즘(preempt..

공부 학습 2021.04.08

컴퓨터 네트워크 - Transport Layer

Transport layer application layer 바로 밑에 있는 계층으로 transport layer 관점에서는 logical End-End transport 단위로 그중간에 있는 과정은 관심이 없다. app message를 Header과 Data로 이루어진 Segment에 저장된다. TCP과 UDP로 크게 2가지가 있다. network layer VS transport layer network layer: 메세지를 목적지까지 전달해주는 계층 transport layer: 들어온 메세지를 기기의 여러가지 프로세스 중에 하나로 전달해주는 계층 transport layer에서 일어나는 일련의 과정 ![KakaoTalk_20210331_113954326](C:\Users\js774\Document..

공부 학습 2021.04.06

컴퓨터 네트워크 - Application Layer

Application Layer 굳이 사용자가 Network 뒤에서 일어나는 일을 알 필요는 없다. Server Client Diagram Server: 항상 켜져 있음, 고정 IP Client: 일시적인 연결이 가능, 항상 켜져있지 않음, 유동 IP Process Communicating: 서로 다른 머신 사이에 서로 다른 프로세스간의 통신 Socket: application과 OS, network 사이의 interface Addressing Processes: 각 소켓은 고유의 IP와 Port Number를 가지고 있다. 네트워크의 종류와 판단 지표 Transport service requirement: data loss, thourput, time sensitive Internet Applicati..

공부 학습 2021.04.06

운영체제 4주차 - 2

Implicit Threading 과도한 쓰레드 생성을 막기 위해 사용자가 쓰레드를 생성하는것이 아닌 컴파일러나 run-time library가 직점 쓰레드를 요청하는것 개발자는 병령로 수행할수 있는 task를 식별하는데 집중하고, 쓰레드는 컴파일러나 런타임 라이브러리가 담당하는걸로.. thread pool 시스템에 필요한 쓰레드를 미리 생성해놓고 필요할때 할당함 -> 상대적으로 빠름 어차피 생성되어있는 thread에서 할당되는것이기 때문에 pool의 크기가 넘어갈 일은 없음 Task의 실행과 Task 생성을 분리하여 Task가 효율적으로 처리될수 있도록 함 Fork-Join Parallelism 어떤 Task를 실행할때 해당 Task를 실행하기 위해 2개의 Task로 Fork를 나누고 종료되었을때 다시..

공부 학습 2021.03.29

시스템프로그래밍 - 함수정리

Open 함수 int open (const char *pathname, int flag, [mode_t mode]); 파일을 열고 File descriptor를 반환한다. mode 속성은 새로운 파일을 열때에만 사용된다. FLAGS O_RDONLY, O_WRONLY, O_RDWR O_CREAT : 파일이 없을 경우 생성한다. O_EXCL: O_CREAT에 의해 파일이 생성될 때 파일이 존재할 경우 에러를 발생한다. O_TRUNC: 파일이 이미 정해진 경우 버퍼를 덮어 씌운다. O_APPEND: 처음 파일을 쓸때 파일 포인터를 마지막에 씌운다. modes O_CREAT 플래그가 있을 때만 사용되며 새로 만들어진 파일의 권한을 설정한다. 다른 경우엔 사용되지 않는다. 반환값 새로운 File discripto..

공부 학습 2021.03.24