7주차. 메모리 관리(1) - Address Binding (Logical Memory -> Phisical Memory)
·
CS/운영체제 정리
Logical vs. Physical Address Logical address 프로세스마다 독립적으로 가지는 주소공간. 각 프로세스마다 0번지부터 시작한다. CPU가 보는 주소는 logical address이다. Physical address 메모리에 실제로(물리적 공간) 올라가는 위치 Q. 주소 바인딩이란? A. 주소를 결정하는 것 Symbolic Address -> Logical Address - ... (이때가 언제일까?) ... -> Physical Address symbolic Address란? 함수나 변수값으로 메모리를 사용하는 것을 symbolic address라 한다. 컴파일이 되면 해당 메모리가 프로세스의 논리적 메모리 주소로 변환이 되고, 이를 실제 물리적 메모리 주소로 변환해서 처리..
네트워크 정리 : Transport Layer _ Window Control (Flow Control & Congestion Control)
·
CS/OSI 7계층 정리
Window Control TCP는 Reliable한 통신을 위해서 수신측과 네트워크의 상태를 파악해서 전송량을 조절하는 기법이 존재한다. 이를 조절하는 기법을 Window Control이라고 한다. 여기서 수신측의 혼잡도를 확인하고 조절하는 것이 Flow Control, 네트워크의 혼잡도를 유추해서 조절하는 것이 Congestion Control이다. RTT Round Trip Time의 약자로 Data가 수신측에 전송되어 ACK를 수신측에서 받을 때 까지 걸린 총 시간을 지칭한다. 이 시간이 길 수록 데이터 전송량은 줄어드어 전송량과 반비례 관계를 갖는다. Window ACK의 수신 없이도 보낼 수 있는 패킷의 최대 크기를 말한다. Window가 1000이라면 ACK를 수신받은 후 ACK의 수신 없이..
네트워크 정리 : Transport Layer _ TCP Error Control - ARQ
·
CS/OSI 7계층 정리
Automatic Repeat reQuest 수신측과 송신측의 데이터 전송과정에서 패킷의 오류나 손실이 발생 시 reliable한 통신을 위해서 해당 패킷을 다시 보내게 된다. 이때 어떻게 해당 패킷을 인지해서 다시 보낼지에 대한 방법이다. Stop-and-Wait, Go-Back-N, Selective-Repeat, 3-duplicate-ACK 방식 등이 존재한다. ARQ가 존재하기 때문에 TCP는 Relialbe한 통신이 될 수 있다. Stop and Wait 하나의 프레임을 보내고 ACK가 올 때까지 기다리는 방식이다. -> 프레임이 손실되거나 손상을 입은 경우 ACK는 오지 않게되고 해당 프레임에 대한 Timer 만료로 인해 재전송이 가게 된다. 제대로 온 프레임에 대해서만 ACK를 보내고 그외에..
6주차. DeadLock (prevention, avoidance, detection & recovery, ignore)
·
CS/운영체제 정리
데드락 (교착 상태) 자신이 가진 자원은 포기하지 않은채 상대방의 자원을 원하는게 맞물린 상태 Deadlock 일련의 프로세스들이 서로가 가진 자원을 기다리면 block된 상태 Resource 하드웨어, 소프트웨어 등을 포함하는 개념 i/o device, cpu cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차 : (1)request → (2)allocate → (3)use → (4)release Deadlock 발생 조건 4가지 Mutual exclusion 매 순간 하나의 프로세스만이 자원을 사용할 수 있다 No Preemption 프로세스는 자원을 스스로 내놓을 뿐, 강제로 빼앗을 수 없는 경우 Hold and wait 자원을 가진 프로세스가 다른 자원을 기..
5주차. 프로세스 동기화 (4) - 전통적인 동기화 문제 (Producer/Consumer, Reader/Writer, Dining philosopers), Monitor
·
CS/운영체제 정리
Producer - Consumer Problem Producer 자원 : 비어있는 버퍼 공유 메모리(버퍼)에 접근하여 Empty-Buffer를 확인한다. 공유메모리에 접근할 때마다 빈 버퍼의 개수는 줄고, 데이터는 추가된다. Consumer 자원 : 채워져있는 버퍼 공유 메모리(버퍼)에 접근하여 Full-Buffer를 확인한다. 공유 메모리에 접근할 때마다 빈 버퍼의 개수는 늘고, 데이터는 줄어든다. 동기화를 위한 Semaphore 변수 Producer & Consumer가 존재하고 있는 상황으로 버퍼로의 동시접근을 막기 위해 Binary Semaphore로 lock / unlock 수행을 해줘야 한다. 즉, 버퍼에 생산자든 소비자든 동시에 하나만 접근해서 조작할 수 있다. 생산자/소비자의 자원 개수 ..
네트워크 정리 : Transport Layer _ TCP
·
CS/OSI 7계층 정리
Why TCP? Q. 전송 계층에는 UDP, TCP 두개의 대표적인 프로토콜을 사용하는데 왜 나누고 어떤 경우에 TCP를 사용할까? A. UDP는 빠른 데이터 송/수신을 위해서, TCP는 Reliable한 통신을 하기 위해서 사용한다. Mechanism for Reliable Data Transfer Sequence Number 패킷의 순서를 정렬하기 위한 용도로 사용한다. 송신자에서 수신자로 흘러가는 패킷에 숫자를 매기는 용도이다. CheckSum 전송되는 패킷 데이터 bit의 오류를 검증하기 위해 사용한다. Error Detect 용도, FEC & CRC를 이용해서 에러를 찾고, 메꾸고, 유효성 검사를 한다. Acknowledgement 송신측에서 보낸 패킷을 수신측이 제대로 받은 경우 응답을 위해 ..
데이터베이스 개론과 실습 5주차 - 정규화 (1~3 정규형, BCNF)
·
CS/데이터베이스 정리
정규화 (Nomalization) 함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서 이상현상이 발생하지 않는 바람직한 릴레이션을 만들어가는 과정이다. 정규화를 통해 릴레이션은 무손실 분해 (nonloss decomposition) 되어야 한다. 릴레이션은 의미적으로 동등한 릴레이션들로 분해되어야 하고 분해로 인한 정보 손실이 발생하지 않아야 한다. 분해된 릴레이션들을 자연조인하면 (pk를 기준으로 조인 & 중복 컬럼은 제거) 전의 릴레이션으로 복원 가능해야 한다. 정규형 (Nomal Form) 릴레이션이 정규화된 정도 각 정규형마다 제약조건이 존재한다. 정규형이 높아질 수록 제약조건이 많아지고 엄격해지며 마찬가지로 릴레이션의 데이터 중복이 줄어 이상현상이 발생하지 않는 바람직한..
네트워크 정리 : Transport Layer _ UDP
·
CS/OSI 7계층 정리
Transport Layer Transport Layer is responsible for the delivery of a message from one process to another. 3계층과 뗄수없는 매우 밀접한 관계에 있는 계층이다. NAT의 경우 IP & PORT 의 조합으로 통신을 하게 된다. Network Layer : Host 간 통신 Transport Layer : network layer에 의존한 프로세스 간 통신 IP 주소 + Port 번호 -> Socket Address가 된다. 소켓 통신은 콘센트를 소켓에 꽂듯이 직접 연결해서 통신하는 방법이다. 트랜스포트 계층 역활 전송파트 Message를 전송할 만한 segments로 Dividing해서, Numbering하고, Sending..
네트워크 정리 : Layer 4&5 주소체계와 DNS
·
CS/OSI 7계층 정리
Transport Layer (전송계층) 전송계층은 사용자 데이터를 상대 호스트의 상대 프로세스까지 전댈해주는 역활을 한다. 프로세스는 여러개가 동시에 실행될 수 있는데 Web 서버의 프로세스 클라이언트의 프로세스가 데이터를 주고 받기 위한 책임을 진다. 여러 프로세스 중 원하는 프로세스를 특정하기 위해서는 식별자를 통해 프로세스를 구별해야 하는데 이를 위해 사용하는 것이 Port Number (포트 번호)이다. Port Number 포트번호 실제 이름대로 항구의 번호를 의미한다. 원하는 도착지 (ex. 부산항)까지는 잘 왔으니 자신이 전달해줄 선착장을 구별해주는 용도이다. Port Number (Transport Layer 주소) Port 번호는 16bit로 2^16개가 존재한다. (65536개) 0 ..
5주차. 프로세스 동기화 (3) - 세마포어 (busy-wating, block & wakeup)
·
CS/운영체제 정리
Semaphore Cirtical Section에 대한 문제 해결 알고리즘을 추상화 시킨것. Integer 변수: 정수값은 자원의 개수를 의미한다. 아래의 두가지 Atomic 연산으로만 접근이 가능하다. Semaphore 변수 "S" P 연산 /* P 연산 */ P(S): if (S 0, S가 양수가 되면 자원을 획득 */ else S--; /* 자원 획득 */ S가 0이하라면 해당 프로세스를 Block 시킴. S가 1이상이라면 해당 자원을 획득하여 사용함. → 공유 데이터를 획득하는 과정, semaphore S의 값을 획득하는 과정 V 연산 /* V 연산 */ V(S): S++; // 자원 반납 wake_up(); /* block 중인 프로세스 깨움 */ → 자원을 사용하고 나서 반납하는 과정 S의 값..