상호배제의 조건 3가지1. 임계구역 밖에 있는 어떤 프로세스도 다른 프로세스의 임계구역으로의 진입을 막아서는 안된다.(가드)2. 임계구역에는 단 하나의 프로세스만 들어갈 수 있다.(1명만 입장)3. 임계구역에 들어가려고 무한히 대기해서는 안된다. (무한대기) 병행 프로세스의 문제점들 1. 프로세스간 동기화 문제 -> 여러개의 프로세스가 공유 자원을 동시에 사용할 수 없게끔 프로세스끼리 입장 순서를 맞춰서(동기화) 임계구역에 입장해야 한다.2. 결정성 문제 -> 프로세스의 수행 순서에 따라 결과값이 달라지면 안된다.3. 교착 상태 문제 -> 상호배제와 동기화문제를 해결하지 못해 프로세스들이 아무것도 못하게 되는 상황을 막아야 한다. 동기화, 데드락, 결정성 상호배제를 해결하기 위해 세마포어와 모니터 사용 ..
세마포어는 추상적인 자료형이다. 세마포어는 신호등이라는 뜻이며, 비동기적으로 생성되는 여러 프로세스들을 동기화 시키는 역할을 한다.다시 말하면 비규칙적으로 생성되는 여러 프로세스들을 신호등을 통해서 일렬로 들어오게끔 규칙적으로 순서를 맞춰주는 역할을 한다. 세마포어에는 두가지 연산이 존재한다 wait와 signal인데 p,v연산이라고도 한다. wait는 세마포어의 값을 1개 깎으며 만약에 값을 깎았는데 그 값이 음수라면 대기큐(빨간불이라 차가 대기중인것과 같음)에 넣는다. signal은 세마포어 값을 1 증가 시키는데 만약 세마포어의 값이 음수여서 임계구역에 들어가려고 하는 프로세스가 대기중이었다고 했을때보통 프로세스가 블락된 상태로 대기하게 되는데 이제 임계구역으로 들어가도 좋다고 깨우는 역할을 한다...
경쟁 상태 (Race condition) 공학 분야에서 경쟁 상태(race condition)란 둘 이상의 입력 또는 조작이 동시에 이루어지는 상태를 말한다. 이런 상태에서는 정상적인 결과가 나오지 않게 될 위험이 있는데 이를 경쟁 위험이라고 한다.-> 공유 자원에 대해 여러 개의 프로세스가 동시에 접근을 시도하는 상태, 동시에 접근하면 A프로세스가 쓴 값을 바로 이어서 B프로세스가 덮어씌우는 상황이 나타날 수 있다. 이를 방지하기 위해서는 상호배제가 필요하다다중 프로그래밍다중 프로그래밍(Multi-programming)이란 CPU 작업과 입출력 작업을 병행하는 것이다. CPU 이용과 처리량을 향상시킬 수 있다. 프로세스 테이블프로세스프로세스 -> 프로세스 테이블에서 한 엔트리, 독립적인 주소 공간 차지..
컴퓨터 리소스에게 직접적으로 명령을 내리는 커널이 있고 쉘이 있으며 응용프로그램이 있다.그렇다면 여기서 쉘은 무엇인가?쉘(Shell)은 조개껍데기라는 뜻이 있으며, OS를 둘러싸고 있는 껍질과 유사하다. 정리하자면 OS와 사용자에게 의사소통을 가능하게 해주는 기능을 담당한다.쉽게 예를 들어 생각하면 윈도우의 MS-DOS창을 생각하면 된다.(여기서 커널이랑 쉘의 차이점이라 하면 커널은 바로 하드웨어의 리소스를 관리하며 쉘은 커널에게명령을 내리게 하는 기능을 가지고 있다. 커널은 기계어 등 어려운 언어를 가지고 있으므로 바로 쓰기 힘들기에 쉘을 이용하여 커널을 컨트롤 할 수 있게 만들어 놓은 것이다.) 쉘의 기능은 응용 프로그램과 커널과의 의사소통 역할, 즉 유저와 커널 사이의 의사소통 역할을 한다. 하드웨..
- Total
- Today
- Yesterday
- useRef
- async
- storybook
- javascript
- state
- webpack
- es6
- return type
- rendering scope
- await
- promise
- design system
- Babel
- type alias
- server side rendering
- useEffect
- hydrate
- Polyfill
- atomic design
- computed
- reducer
- props
- reflow
- react hooks
- mobx
- react
- Next.js
- reactdom
- Action
- typescript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |