앞선 예제의 서버는 iterative server이다. 이는 daytime server같이 단순한 것에는 괜찮다. 그러나 클라이언트의 요청을 서비스하는 데 긴 시간이 걸릴 때는, 서버가 한 클라이언트에 얽매이는 것 보다 동시에 많은 클라이언트를 처리하는 것이 바람직하다. 유닉스에서 다중접속(concurrent)서버 를 작성하는 간단한 방법은 각각의 클라이언트를 처리할 자식 프로세스를 fork하는 것이다. 다음 예제는 전형적인 다중접속(concurrent)서버의 틀을 보여주고 있다. 연결이 설정되면 accept에서 반환되고, 서버는 fork를 호출한다. 자식 프로세스는 클라이언트와 데이터를 주고 받고 부모 프로세스는 다시 다른 연결요청을 accept하기 위해서 반복문의 맨 위로 돌아가게 된다. 자식 프로세..
fork시스템 콜을 호출하기 전까지 부모 프로세스가 열어놨던 파일들의 정보를 그대로 자식에게도 카피 한다. fork가 호출되면 부모의 context도 복제될 뿐만 아니라 PCB의 내용도 거의 그대로 복제 된다. 부모와 자식의 오픈 파일 테이블을 열어보면 각 프로세스가 파일 디스크립터 번호 몇번을 사용한다는것만 알지 특정fd에 해당하는 소켓이 몇개의 프로세스가 오픈해서 쓰고있는지는 모르니까 이걸 표시할 필요가 있다 . 공유 되어 있는 파일들을 몇개의 어떤 프로세스들이 공유하고 있는지를 커널이 별도로 보관,관리할 필요가 있다. 커널의 오픈파일테이블을 보게 되면 특정 파일이 몇개의 프로세스가 현재 오픈해서 쓰고있는지를 표시해 놓았다. (reference count라고 불린다.) 부모 프로세스가 열고 있던 소켓..
MS는 단말기를 의미한다단마릭 내부에 TE,MT로 또 나뉜다. GSM은 예전에는 아날로그 통신 규약 이었지만 요즘에는 디지털로 바뀌었기 때문에 데이터 전송이 가능한 통신 규약이다. GSM은 원래 음성통신이 주된 목적이었다. 아날로그 신호를 전달했었지만 아날로그신호는 노이즈에 취약 하고 오류복구가 힘들기 때문에 디지털로 변환해서 전송하는 방식을 요즘에는 채택한다. Um은 무선 통신 규약이다. 디지털 신호는 오류복구를 위한 추가 데이터가 필요하기 때문에 데이터 전송 속도가 느려진다.bearer는 전달이라는 뜻이다.보이스 자체에 대해서는 오류 복구를 하지 않는다. TE->아날로그신호를 디지털 데이터로 만든다.bearer service -> 디지털 데이터 전달 서비스 GSM은 전화망 이외에도 여러기능(팩스기능,..
정답지 Suppliers(sid: integer, sname: string, address: string)Parts(pid: integer, pname: string, color: string) Catalog(sid: integer, pid: integer, cost: real) 9. Find pairs of sids such that the supplier with the first sid charges more for somepart than the supplier with the second sid.10. Find the pids of parts supplied by at least two different suppliers. 11. Find the pids of the most expensive ..
같은 코드를 여러번 실행시켜야 하는 상황이 있다고 하자. 이런 상황에서 프로세스를 여러번 실행 시킬 수도 있지만 프로세스는 한번만 실행시키고 그안에서 여러개의 쓰레드라는 또다른 실행의 끈(?)을 실행시킨다. 프로세스는 운영체제에서 독립적인 주소공간과, 프로세스 테이블에서의 한 엔트리(Process Control block= PCB)를 차지하게 되는데 같은 프로세스를 여러번 실행시키면 계속 주소공간과 PCB를 할당해야 하므로 오버헤드가 매우 커지게 된다. 하지만 한 프로세스 내에서 여러개의 멀티 쓰레드를 사용하면 프로세스를 할당할때보다 더 적은 자원을 사용해서 똑같은 일을 해낼 수 있게된다. 주소 공간이라는것은 위에서 보듯이 code,data,stack부분으로 나뉘게 된다. code부분에는 그 프로세스의 ..
Shortest Process Next 평균 응답시간(평균 대기시간)을 최소로 만드는것이 목표실행 대기중인 여러개의 프로세스들이 서로 연관이 있다고 가정하며, 바로 전에 실행된 프로세스의 실행시간이 이번 차례 프로세스의 예측 수행시간에 가장 큰 영향을 미친다. 다시 말해서, 이번에 실행될 프로세스 바로 전 프로세스가 cpu를 오랫동안 썼다면 이번에 실행될 프로세스 또한 cpu를 오래 쓸것으로 예상하는것이다.이 알고리즘은 각각의 프로세스의 실행시간들을 예측해놓고 가장 cpu를 적게 쓸것으로 예상되는것부터 실행시킨다.추정치 계산 식 = (바로전 프로세스의 예측치) * a + (1-a) * (바로전 프로세스의 실행시간) ->Aging이라고 한다. Guaranteed Scheduling 모든 프로세스가 할당된 ..
인터렉티브 시스템에서는 한 프로세스가 cpu를 독점하지 않도록 해야한다. 그러기 위해서 퀀텀이라는것을 사용한다.(퀀텀 == 한프로세스에게 할당된 cpu시간) Round Robin Scheduling배치 시스템의 스케쥴링 알고리즘중 SJF와 약간 구조는 비슷하다.SJF에서는 차례대로 들어오는 프로세스를 무조건 처리할때까지 cpu를 할당하지만 RR에서는 일정시간 cpu를 퀀텀동안 할당해주고 그 다음 프로세스를 차례대로 실행시키며 퀀텀을 다쓴 프로세스는 큐의 맨 뒤로 보내진다. 퀀텀을 얼만큼 할당해야 하는가?너무 짧은 경우 : process switch(context switch)가 많이 발생 해서 cpu 효율이 떨어진다. (오버헤드가 커진다)너무 긴 경우 : 반응시간이 안 좋아진다. 다른 프로세스들의 대기시..
배치 시스템에서 사용되는 스케쥴링 알고리즘들 First Come First Served 알고리즘 1개의 레디 큐 존재비선점형 방식(프로세스에 할당된 cpu를 자발적으로 내놓을때까지 뺏을수없다.)실행중인 프로세스가 블락되면 큐의 맨앞 프로세스가 실행 되고 블락된 프로세스가 다시 레디상태가 되면 큐의 맨 뒤로 이동된다.이해하기 쉽고 구현하기 간단한 알고리즘 Shortest Job First 알고리즘비선점형 방식프로세스의 실행시간이 미리 알려져있어야함. 최적의 평균 turnaround time(모든 job이 동시에 제출되어야 한다는 조건!!)모든 job이 동시에 제출된다고 가정했을때 turnaround time이 적은것부터 처리하는게 모든 프로세스를 가장 빠른 시간에 처리할수있다. 하지만 이 가정이 깨졌을때는..
- Total
- Today
- Yesterday
- Action
- Polyfill
- rendering scope
- promise
- javascript
- react
- atomic design
- async
- reflow
- Babel
- storybook
- type alias
- reducer
- webpack
- hydrate
- typescript
- useEffect
- es6
- Next.js
- return type
- computed
- react hooks
- server side rendering
- useRef
- state
- mobx
- reactdom
- await
- design system
- props
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |