Computer Science
-
[OS] 공유 자원의 접근을 제한하는 Process SynchronizationComputer Science/Operating System 2021. 8. 6. 08:59
많은 프로세스들은 자원 혹은 메모리를 공유한다. ex) 공유 메모리를 사용하는 프로세스들, 커널 내부 데이터를 접근하는 루틴들 Storage-Box: Memory Address Space / Execution-Box: CPU Process 프로세스의 수행은 공유 자원에 변화를 끼치게 되고, 여러 프로세스가 동시에 공유 자원에 접근하면 데이터의 일관성을 보장받을 수 없다. 그래서 프로세스는 특정 공유 자원을 선점할 때 다른 프로세스가 접근할 수 없게끔 제한한다. 하지만 특정 자원에 접근하려는 프로세스가 여러 개 일 경우 Race Condition이 발생할 수 있다 공유 데이터의 동시 접근은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다 !! 따라서 consistency 유지를 위해서는..
-
[Network] ARP 프로토콜Computer Science/Network 2021. 8. 2. 09:13
ARP 프로토콜(Address Resolution Protocol): IP주소를 이용해서 같은 네트워크 대역에서 통신하기 위해 필요한 MAC 주소를 알아내는 프로토콜 같은 네트워크 대역에서 통신을 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC주소가 모두 필요하다. 이 때, IP주소는 알고 MAC주소는 모르더라도 ARP 프로토콜을 통해 통신이 가능하다. ARP 프로토콜 구조 Hardware type : 2계층에서 사용하는 프로토콜 타입 Protocol Type : IPv4 Hard Add Len : 06 Proto Add Len : 04 Opcode : 어떤 동작을 하는지 나타내는 코드(1 - 요청, 2 - 응답) source hardware addre..
-
[OS] CPU Scheduling - 어떤 Job이 CPU를 선점할까Computer Science/Operating System 2021. 8. 2. 01:34
우리는 컴퓨터를 사용할 때 한 가지 작업만 하지 않는다. 크롬도 키고 vscode도 키고 카톡도 하고 유튜브도 봐야된다. CPU 스케줄링은 여러 종류의 Job들이 섞여있는 운영체제 환경에서 이러한 다중 프로그래밍을 가능하게 하는 동작 기법이다. 운영체제의 CPU 스케줄링은 다음의 두 가지 사항을 고려해야 한다. Interactive Job에게 적절한 시기에 Response를 제공하는 것 CPU와 I/O device 등 시스템 자원을 골고루 & 효율적으로 제공(I/O-bound job / CPU-bound job) CPU 스케줄러는 Ready 상태의 프로세스 중 CPU를 할당할 프로세스를 선택하는 역할, Dispatcher는 CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘기는 역할..
-
[Network] 네트워크를 설명하는 두 가지 모델 - TCP/IP, OSI 7계층Computer Science/Network 2021. 7. 17. 13:57
OSI 7계층 - 네트워크 통신을 체계적으로 다루는 ISO에서 표준으로 지정한 모델. 데이터를 주고받을 때 데이터 자체의 흐름을 각 구간별로 나눠 놓은 것 TCP/IP 모델 - HTTP, TCP/UDP, IP, ICMP, ARP, Ethernet 등 각종 프로토콜을 중심으로 Layer를 4계층으로 단순화시킨 모델 공통점 계층적 네트워크 모델 계층간 역할 정의 차이점 OSI는 역할 기반, TCP/IP는 프로토콜 기반 OSI는 통신 전반에 대한 표준 TCP/IP는 데이터 전송기술 특화 + 패킷 - 네트워크 상에서 전달되는 데이터를 통칭하는 말 네트워크에서 전달하는 데이터의 형식화된 블록 제어 정보와 사용자 데이터로 이루어지며 사용자 데이터는 페이로드라고도 한다. Encapsulation - 여러 프로토콜을 ..
-
[Network] 데이터 링크 계층의 역할과 Ethernet 프로토콜Computer Science/Network 2021. 7. 15. 18:02
OSI 7계층의 2계층에는 데이터 링크 계층이 위치한다. 데이터 링크 계층 : 장치 간 신호를 전달하는 물리 계층을 이용하여 네트워크 상의 주변 장치들 간 데이터를 전송하는 계층 이 계층에서는 주로 로컬 네트워크에서 통신하는 방법에 대해 정의한다. 실질적인 네트워크 역할을 분류한 TCP/IP 네트워크 모델에서는 데이터 링크 계층과 물리 계층을 묶어 네트워크 인터페이스 모델로 설명하기도 한다. 데이터 링크 계층에서는 같은 네트워크 상(같은 LAN 대역)에 존재하는 여러 장비 중, 어떤 장비가 어떤 장비에게 데이터를 전달하는지의 역할을 수행한다. 또한 추가적으로 그 과정에서 CRC 기반의 오류 제어 및 흐름 제어를 수행한다. 다른 네트워크와 통신하기 위해서는 3계층의 주소와 프로토콜이 필요하며, 3계층을 이..
-
데이터의 효율적 검색을 돕는 IndexComputer Science/Database 2021. 7. 10. 02:02
※ 이 글의 전반적인 내용은 아래의 글을 참조하여 작성하였음 https://d2.naver.com/helloworld/1155 Index란? 웹 어플리케이션의 백엔드 성능을 높이기 위해 SQL 튜닝을 사용한다. SQL 튜닝이란, SQL이 DBMS의 인덱스를 활용하도록 SQL을 수정하는 것을 말한다. 따라서 인덱스를 이해하는 것이 좋은 SQL문을 작성하는 것과, 어플리케이션의 성능을 향상시키는 데에 중요하다. Index: 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조 인덱스는 Table 내의 1개의 Column, 혹은 여러 개의 column을 이용하여 생성할 수 있다(RDBMS에서 해당 Table의 Primary Key는 자동으로 Index가 생성된다). 데이터베이스 테이블의 ..
-
Transaction은 논리적 작업 단위의 집합이다Computer Science/Database 2021. 7. 6. 01:03
데이터베이스에서 의미하는 트랜잭션이란 데이터베이스 관리 시스템(DBMS) 또는 유사한 시스템(트랜잭션의 성공과 실패가 분명하고 상호 독립적이며 일관되고 신뢰성 있는 시스템)에서의 가장 작은 상호작용 단위를 말한다. Transaction: 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합 ex) 계좌 간의 자금 이체 한 계좌에서 다른 계좌로 10만원을 이체하는 작업은 한 계좌에서 10만원 인출 + 다른 계좌로 10만원 입금의 두 작업으로 구성된다 하지만 전체 작업이 정상적으로 처리될 수 없는 경우 아무 것도 실행되지 않은 처음 상태로 복구되어야 한다 따라서 트랜잭션이란 다양한 데이터 항목들을 액세스하고 갱신하는 프로그램 수행의 단위가 된다 위의 그림은 트랜잭션이 가질 수 있는 상태를 나타낸다 Act..
-
[OS] Process Management와 System CallComputer Science/Operating System 2021. 6. 13. 02:57
모든 프로세스는 부모-자식 관계를 지닌다. 프로세스의 생성에는 처음부터 새로 생성하는 방식과, 부모 프로세스를 복제해서 생성하는 방식이 있다. 프로세스를 처음 생성할 때 에는 프로그램 코드와 데이터를 메모리에 적재하고, 새로운 PCB를 생성하여 초기화하고, 프로세스를 Ready Queue에 enqueue한다. 프로세스를 복제할 때 에는 기존 프로세스를 부모(Parent) 프로세스, 새로운 프로세스를 자식(Child) 프로세스의 관계를 가진다. 복제와 동시에 현재 실행중이던 프로세스를 중단하고 상태를 저장 부모 프로세스의 PCB를 복사해서 새로운 PCB를 생성한 뒤 Ready Queue에 추가 Linux) fork() 함수 사용 부모 프로세스는 여러 자식 프로세스를 가질 수 있기 때문에 그림과 같은 트리 ..