결론부터 얘기하면 동기화를 제공하기 위해선 Lock, 세마포어, 모니터 등의 방법을 사용 할 수 있으나 Lock을 사용하는 방식엔 문제가 있다. 여러개의 프로세스가 하나의 공유자원에 동시에 접근하게 될 경우 공유 자원의 값이 꼬이는 현상이 발생 할 수 있는데 이것을 race condition(경쟁 상태)이라고 한다. 동기화라는것은 내가 알고 있는 정보와 니가 알고 있는 정보가 일치해야 한다는것이다. 프로세스의 관점에서 보면 프로세스 A와 B가 있을때 서로가 알고 있는 공유자원의 값이 같아야 한다는것이다. 공유 자원에 접근하는 코드 영역을 Critical Section(임계 영역)이라고 하는데, 이 임계영역에 프로세스가 동시에 접근하게 되면 경쟁 상태가 발생하는 것이다. 그러므로 동기화( 프로세스 A,B가..
디스크에서 메모리로 로드된 프로그램을 프로세스라고 한다. 즉, 프로세스는 실행중인 프로그램이다. 이 프로세스는 cpu를 할당 받아서 실행되는데 총 3가지 상태가 있다. Ready -> Run -> Block 의 3가지 상태가 있다. 여기서 Run 상태란 프로세스가 CPU를 할당받아 실제로 실행되는 상태이다. 스케쥴링이라는 것은 Ready큐에서 실행을 대기 하는 여러개의 프로세스들의 실행 순서를 결정하는 일이다. 레디 큐에 10개의 프로세스들이 있는데, 이 프로세스들중에 중요한것과 그렇지 않은것들이 섞여있을것이다. 중요도를 기준으로 무엇을 먼저 실행시킬까 하는것이 스케쥴링 알고리즘의 핵심이다. 스케쥴링 알고리즘은 두가지 방식이 있다. 1. 선점형 스케쥴링 - cpu를 할당받은 프로세스가 아직 실행을 끝마치..
이전 시간 정리1계층을 통해서 케이블로 연결된 두 기기가 인터페이스를 통해 신호(아날로그,디지털)를 주고 받을 수 있게 되었다. 또한 2계층은 다수의 연결된 컴퓨터에서 통신을 할때 충돌이 일어나지 않게 하는 역할을 한다. 따라서 소규모 랜을 구축 할 수 있다. 즉, 2계층 까지만 해도 어느정도 규모의 네트워크를 구성할수 있다는것이다. 그럼 3계층부터는 왜 필요하지?브로드캐스트 도메인을 구분하기위해서 필요하다. 만약 모든 네트워크가 2계층으로 구성되어 있다면 하나의 컴퓨터에서 브로드 캐스트가 일어났을때 모든 컴퓨터가 그 브로드 캐스트를 처리해야되기때문에 통신 효율이 떨어진다. 따라서, 라우터를 통해서 브로드캐스트 도메인을 분리 시켜야 한다. 2계층까지 구성하여 랜을 구축 할 수 있었다. 3계층은 2계층 서..
첫번째 계층을 통해서 인접한 컴퓨터들이 물리적인 통신을 할 수 있게 되었다. 하지만, 그렇다고 해서 모두 올바르게 통신 할 수 있지는 않다. 연결되어 있는 컴퓨터들이 동시에 신호를 보낼경우 충돌이 일어나고 그 충돌을 해결하기 위해서 재전송을 하기 때문이다. 그렇게 되면 효율이 매우 떨어진다.데이터 링크 계층에서는 인접한 기기들끼리 통신을 할때 충돌이 일어나는것을 막아주는 역할을 한다. 즉 LAN에서의 충돌을 방지하는 역할 이것이 두번째 계층의 핵심이다. 대표적인 프로토콜로 이더넷 프로토콜이 있다. 이 프로토콜은 CSMA/CD방식을 사용한다. 네트워크에 누군가 신호를 보내고 있다면 그것을 감지하여 잠시동안 보내지 않고 보내지 않는다면 내가 보낸다. 근데 네트워크의 두 노드 이상이 동시에 데이터를 전송한경우..
물리 계층 OSI 1 Layer의 역할 : 서로 다른 두 기기(컴퓨터)가 실제로 물리적 통신이 이루어질수 있는 서비스를 제공데이터 통신의 과정은 다음과 같다. 컴퓨터 A에서 B에게 패킷을 보내려고 한다. A의 컴퓨터에선 OSI 7Layer -> ... -> OSI 1 Layer까지의 캡슐화(각 레이어의 헤더가 붙음) 된 다음 1Layer의 NIC에서 비트열을 디지털 신호 또는 아날로그 신호로 바꿔준다. 그럼 이 신호가 케이블을 타고 B의 NIC에 도착하고 그때 다시 비트열로 변경되고 1Layer -> 7Layer까지 변환되어 데이터가 전달 되는 것이다. 이 과정에서 비트열을 신호로 바꾸고 그 신호를 다시 비트열로 바꾸어 실제 물리적인 통신을 가능하게 하는것이 1Layer의 역할이다. 대표적인 장비로는 허..
1. 클래스 패스클래스 패스란, JVM이 실행하고자 하는 프로그램의 클래스파일이 위치한 경로를 의미한다. 환경변수에 클래스패스를 등록해두면 해당 프로그램의 여러 클래스파일이 여기저기에 위치해도 JVM이 알아서 찾아서 실행 시킬 수 있다. 2. 인스턴스와 객체 용어의 차이점인스턴스란 사례,실제 라는 뜻이다. 어떤 클래스로부터 실체화 되었다는 점을 강조할 때는 인스턴스라는 용어를 사용하고 현실세계의 어떤 객체를 프로그램상에서 표현하기 위해 사용할때는 객체라는 용어를 사용한다. 3. 인스턴스 참조 변수와 인스턴스 생성인스턴스를 생성하면 메모리에 어떤 공간을 차지한다는것이고 그 메모리의 주소를 참조 변수에 갖고 있는것을 의미한다.클래스를 정의하는것은 새로운 자료형을 정의하는것을 의미한다. 4. IEEE754 표..
네트워크 계층은 다른 말로 IP 계층이라고도 한다.이 Layer3에서 사용하는 프로토콜이 IP(Internet Protocol)이기 때문이다. 아이피 자체는 비 연결 지향형 프로토콜이다. 내가 여기서 다른 컴퓨터로 데이터를 보내는데 그 데이터를 전송만 할 뿐이지 그 데이터가 목적지에 확실히 도착하는것을 보장하진 않는다. OSI 7Layer에서 각 계층이 7개로 나뉘어져있다. 현재의 계층은 아래계층의 서비스를 이용해서 위의 계층에게 어떤 서비스를 제공한다. 각 계층에서 사용되는 프로토콜이 존재하고 이것이 스택 형태로 쌓아져있다. 따라서 프로토콜 스택이라고 부르기도 한다. 트랜스포트 계층은 아이피 계층을 이용해서 응용 계층에게 어떤 서비스를 제공한다. 네트워크 계층은 비 연결 지향형 프로토콜인 아이피를 사용..
소켓은 L5와 L4사이에 위치한다. 응용 프로그램이 다른 네트워크에 있는 다른 응용 프로그램과 통신을 하기 위해서는 소켓을 하나 생성하고 그 소켓에 아이피/포트 번호를 할당한 다음 데이터를 보내야 한다. 소켓이란것은 쉽게 말해 벽에 있는 콘센트에 전원 플러그를 꽂아 전원을 공급 받는것과 똑같다. L5와 L4 사이에 소켓을 생성 해놓고 그 소켓에 전원 플러그를 연결한뒤 데이터를 전송해야 하는 것이다. 소켓은 연결 지향형, 비연결 지향형 2가지가 존재한다. 연결 지향형은 tcp전용으로 생성되는 소켓을 의미한다. 비 연결 지향형 소켓은 udp전용 소켓을 의미한다. udp 소켓의 경우 보내는 측에서 write를 2번 했으면 받는 측에서도 똑같이 2번 read를 해야 한다. 하지만 연결 지향형 소켓은 버퍼링을 하..
- Total
- Today
- Yesterday
- mobx
- webpack
- props
- design system
- reflow
- reactdom
- reducer
- state
- es6
- useEffect
- return type
- server side rendering
- storybook
- javascript
- rendering scope
- Action
- Babel
- useRef
- type alias
- promise
- typescript
- react
- Next.js
- await
- react hooks
- atomic design
- computed
- hydrate
- async
- Polyfill
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |