출처: https://3months.tistory.com/307 [Deep Play]

전체 글 230

Concurrent Programming

Iterative Server Iterative Server는 하나의 process만을 사용하는 Server이다. Iterative Server에서 client의 connection이 먼저 생성되면 그 connection이 종료될 때까지 다른 client에게 service를 제공하지 못한다. 따라서 client가 server를 무한정 기다리게 되는 상황이 발생한다. Connect 함수는 connection이 생성되지 않았더라도 server의 listenfd에 queuing되면 리턴 값을 반환하기 때문에 client는 read를 하면서 block된다. Process-based Server Process-based Server는 여러 개의 process를 사용한다. Client와의 connection이 생길..

Chapter 2

MIPS MIPS는 million instructions per second가 아니라 Microprocessor without Interlocked Pipeline Stages로 MIPS Technologies에서 개발한 RISC 계열의 명령어 집합 체계이다. ※RISC, CISC? RISC - Reduced Instruction Set Computer라는 뜻으로 CPU 명령어 개수를 줄여 하드웨어 구조를 좀 더 간단하게 만들었다. CISC - Complex Instruction Set Computer라는 뜻으로 복잡한 명령어 집합을 갖는 CPU 아키텍쳐이다. Arithmetic Operations Add, subtract은 3개의 operand가 필요하다. 두 개의 operand는 source이고 나머..

Network Programming

A Client-Server Transaction 대부분의 network application은 client-server model을 기반으로 한다. Client-server model이란? 한 개의 server process와 한 개 또는 여러 개의 client process로 이루어져 있다. Server는 resource를 관리한다. Server는 resource를 이용하여 client에게 service를 제공한다. Server는 client의 요청에 의해서 활성화된다. ※ Client와 server는 host에서 실행된다.(host는 같을 수도, 다를 수도 있다. Computer Networks network는 계층적 시스템으로 지리적 근접성에 기반하여 구분한다. SAN (System Area Ne..

Standard I/O, Unix I/O vs Standard I/O vs RIO

Standard I/O Streams Standard I/O model은 file을 stream 개념으로 open한다. Buffered I/O : Motivation Application은 한 번에 한 문자만을 read/write하는 경우가 있는데 이는 많은 system call을 불러오기 때문에 비효율적이다. Standard I/O는 Buffer만큼 read,write을 하기 때문에 system call이 적게 발생한다. printf가 발생할 때마다 disk에 접근하는 것이 아니라 '\n'를 읽거나 exit, return from main이 발생할 때만 disk에 접근하게 된다. Unix I/O vs Standard I/O vs RIO Standard I/O와 RIO는 low-level Unix I/O..

Metadata, sharing and redirection

File Metadate Metadata는 data에 대한 data이다. stat 그리고 fstat 함수를 이용하여 접근할 수 있다. How the Unix Kernel Represents Open Files Descriptor table, Open file table, v-node table 모두 kernel 영역에 있다. v-node table에는 file의 meta data가 있고 이 정보를 통해 Disk에 있는 file정보를 불러올 수 있다. File Sharing 두 개의 descriptor가 같은 file에 access하게 되면 아래와 같은 구조로 접근하게 된다. 같은 file에 접근하더라도 descriptor들은 다른 open file table entry를 가지고 있고 다른 open fil..

Unix I/O, RIO package

Unix I/O Overview 모든 I/O device는 file로 표현 된다. (ex /dev/sda2, /dec/tty2) 심지어 커널까지도... Hardware device를 file에 mapping 시키는 것은 Unix I/O라는 간단한 interface를 kernel이 이용할 수 있게 한다. open() - I/O device에 접근한다. close() - I/O device에 접근을 종료한다. read() - 파일에서 n byte를 읽어 메모리에 가져온다. write() - 메모리에 n byte를 파일에 저장한다. lseek() - 현재 file position을 바꾼다. File Types 각각의 file들은 역할을 나타내는 type을 가지고 있다. Regular file Directory..

Chapter 2 : Reduction to Relation Schemas

Reduction to Relation Schemas ER model을 만들었다면 Relation Schema로 표현 할 줄 알아야 한다. 각각의 entity set과 relationship set은 unique schema가 있다. 각각의 schema는 unique name으로 이루어진 column들을 가지고 있다. Representing Entity Sets Strong entity set은 속성이 변하지 않고 schema가 된다. Weak entity set은 identifying strong entity set의 primary key를 포함하여 schema가 된다. ※예시 Strong entity set : course(course_id,title,credits) Weak entity set : ..

Signal

Signal Signal은 Process가 받는 message이다. Process는 kernel, 다른 process 그리고 자기 자신에게서 Signal을 받을 수 있다. Signal Concepts : Sending a Signal Kernel은 Signal을 destination process로 context switch 할 때 전달해 준다. Kernel이 signal을 보내는 이유 Kernel이 divide-by-zero(SIGFPE) 또는 termination of a child process(SIGCHLD)를 해야 할 때 Process가 다른 process를 kill 하고 싶을 때 Signal Concept : Receiving a Signal Process가 Signal을 받았을 때 하는 행동..

Shell

Shell Programs Shell이란 사용자로부터 받은 명령을 실행시키는 application이다. Kernel과 사용자 사이의 다리역할을 한다고 보면 된다. Shell Program의 종류에는 sh, csh/tcsh, bash가 있다. 우리 학교의 리눅스 서버에서는 bash를 이용하고 있다. Shell program은 while문을 돌면서 항상 명령어를 받을 준비를 하고 있다. (오른쪽은 코드) ls-al(명령어)를 치면 eval함수가 실행된다. eval함수는 명령어가 실행가능하다면 fork를 띄우고 execve함수를 사용하여 명령어를 실행한다. background이냐 foreground이냐에 따라 이후에 처리가 달라지는데,,, 이해를 못했다 ㅋㅋ Foreground process : Shell에서..

[BOJ] 11779 최소비용 구하기 2

https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 문제 n(1≤n≤1,000)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1≤m≤100,000)개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화 시키려고 한다. 그러면 A번째 도시에서 B번째 도시 까지 가는데 드는 최소비용과 경로를 출력하여라. 항상 시작점에서 도착점으로의 경로가 존재한다. 입력 첫..

백준/Graph 2022.03.22