✔️ComputerScience 21

리눅스 시스템 및 커널 전문가 스터디 시작

10월 12일자로 프로그래머스에서 약 5개월간 진행하는 에 참여하게 되었다. 목적 본 과정의 목적은 새로운 하드웨어에 리눅스 운영체제 기반 시스템을 설치하고, 서버를 작동시키고, 리눅스 운영체제 커널을 수정하여 새로운 기능을 추가하고, 성능을 최적화하고, 리눅스 기반 시스템의 오류를 찾고 디버깅할 수 있는 기술을 실습과 함께 5개월동안 학습하는 것이다. 목적이 거의 커리큘럼의 굵직한 주제들이 거의 나열해둔 것과 같아서, 내가 이해한 목적을 한 줄로 정리하자면, 리눅스 운영체제를 이해하고, 운영체제 커널의 기능 개발 및 성능 최적화, 트러블 슈팅을 실습을 통해 앞서 개념 이해 한 것을 적용할 수 있는 과정 이라고 생각한다. 커리큘럼 1. C/C++ 알고리즘 해결 2. 리눅스 시스템 설정 및 리눅스 명령어 ..

[Network] Transport Layer - TCP: Connection-oriented transport

한양대학교 - 컴퓨터네트워크 수업을 듣고 정리한 내용입니다. 1. TCP Segment Structure TCP Segment Structure는 Header와 data 로 구분되고 header에 있는 각 필드의 의미를 아는 것이 중요하다. 몇 가지는 앞서 Reliable Data Transfer을 공부할 때 나온 개념인데 이렇게 header에 담겨져가는 것을 보니 좀 더 이해에 도움이 된다. 1) sequence number, ACK sequence number is byte stream "number" of first byte in segment's data. ACKs(TCP uses cumulative ACK) is sequence number of next byte expectred from ot..

[Network] Transport Layer - Reliable Data Transfer(신뢰성 있는 데이터 전송; RDT)의 통신 원리, Pipelined protocols

한양대학교 - 컴퓨터네트워크 수업을 듣고 정리한 내용입니다. 1. Reliable Data Transfer란 Reliable Data Transfer(신뢰성 있는 데이터 전송; RDT)이란 application layer에서 transport layer로 전달 된 데이터가 유실 없이 상대 application layer로 전달하는 것. 하지만 unreliable 한 상황은 언제든 발생할 수 있다. What can happen over unreliable channel? 1. Message error 2. Message loss unreliable한 상황에는 이 2가지가 있다. 다시말해 이 두가지 사항만 잘 handling하면, reliable한 channel을 만들 수 있다는 것! 그래서 TCP에서 제공..

[Network] Socket Programming

한양대학교 - 컴퓨터네트워크 수업을 듣고 정리한 내용입니다. 1. Socket이란 client process와 server process간의 통신이 application program이라면 개발자나 사용자 입장에선 OS내부를 건들이는건 아니다. 그냥 OS에서 제공하는 API를 사용할 뿐! 이처럼 process와 process간 통신에서 사용하는 API를 socket이라고 한다. 그리고 이 API는 OS에서 제공해주는 것이기 때문에 제공해주는 것들 '만' 사용할 수 있다. 2. Socket Type (protocol) 다른 관점에서 생각해보면, OS에는 application layer 아래의 layer들, 즉 transport layer부터 쭉 구현되어 있다. application layer 에서는 이 t..

[Python] 동시성과 병렬성 문법 - GIL과 Multithreading

1. 멀티 스레드, 멀티 프로세스 개념 [운영체제] Thread 에서 정리한 적이 있음. a. Processs vs Thread Process: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램, 즉 메모리에 올라와 실행되고 있는 독립적인 프로그램 인스턴스 Thread: 프로세스 내에서 동작되는 여러 실행의 흐름 단위 이렇게 하나의 프로세스 내에서 생성된 thread끼리 해당 프로세스의 영역을 공유한다. - Processs는 독립적, Thread는 프로세스의 서브넷 - Process는 각각 독립적인 자원을 가진다. Thread는 프로세스의 자원을 공유한다. Process는 별도의 Code, Data, Stack, Heap을 독립적으로 가지는 반면 Thread는 Stack만 독립적으로 가지고 Code, ..

[Network] 네트워크 계층과 네트워크 간의 연결

모두의 네트워크 를 읽고 정리한 내용입니다. 다른 네트워크에 있는 목적지로 데이터를 연결하기 위해서는 네트워크 계층의 기술이 필요 데이터 링크 계층에서는 이더넷 규칙을 기반으로 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 다른 네트워크 간의 통신을 가능하게 하기 위해선는 네트워크 계층이 필요. 1. IP 1) IP 헤더 네트워크 계층에는 IP(Internet Protocol) 프로토콜이 있다. 네트워크 계층에서 캡슐화를 할 때 아래 그림과 같은 IP 헤더를 붙이고, 이렇게 데이터에 IP 헤더가 추가된 것을 IP 패킷이라고 한다. 여기에 Source IP address(출발지 IP 주소), Destination IP address(도착지 IP 주소)가 있다. 이 외의 정보들은 [TCP/IP..

[Database] Database Index

youtu.be/ZugmrJnbvdU Database Index란 데이터베이스는 파일들의 집합으로 저장되고, 각 파일은 일반적으로 동일한 유형의 레코드들의 모임으로 이루어진다. 이 파일들은 일반적으로 디스크와 같은 보조 기억 장치에 저장된다. Index는 DBMS가 파일 내의 특정 레코드들을 빠르게 찾을(특히 SELECT) 수 있도록 하는 데이터 구조이므로 인덱스를 통하여 질의를 수행하면 응답시간이 향상된다. 인덱스의 유형은 크게 단일 단계 인덱스와 다단계 인덱스로 구분된다. Index의 장/단점 1) 장점 - 검색 속도가 빨라질 수 있다. - 그 결과 해당 쿼리의 부하가 줄어들어서, 결국 시스템 전체의 성능이 향상된다. 2) 단점 - 인덱스가 데이터 베이스의 공간을 차지하기 때문에 대략 데이터 베이스 ..

[Database] 무결성 제약조건

1. 무결성 제약조건이란 데이터 무결성: 데이터의 정확성 또는 유효성을 의미 무결성 제약조건: 데이터베이스 상태가 만족시켜야 하는 조건이자 사용자에 의한 데이터 베이스 갱신이 데이터베이스의 일관성을 깨지 않도록 보장하는 수단 무결성 제약조건의 목적: 일관된 데이터 베이스 상태를 정의하는 규칙들을 명시적으로 정의하여서 권한을 가진 사용자들로부터 데이터베이스의 정확성을 지키는 것 무결성 제약조건의 장점: 스키마를 정의할 때 일관된 데이터베이스 상태를 정의하는 규칙들을 한 번만 명시하면 되고, 데이터베이스가 갱신 될 때 DBMS가 자동적으로 이러한 일관성 조건을 검사해주므로 응용 프로그램단에서 이를 일일이 신경써주지 않아도 된다. 2. 무결성 제약조건의 종류 도메인 제약조건: 각 애트리뷰터 값이 반드시 원자값..

[운영체제] 가상 메모리의 이해

가상 메모리(Virtual Memory) 리눅스의 각 프로세스마다 4GB를 차지한다. 그런데 통상 메모리는 16GB? 정도인 것도 있고, 코드는 메모리에 반드시 있어야 하는데 여러개의 프로세스들 실행할 때 메모리 크기의 한계를 어떻게 극복할 수 있을까? 즉 어떻게 하면 한정된 메모리에서 여러 프로세스를 실행시킬 수 있도록 메모리 구조를 가져갈 것인가? 이때 활용하는 것이 가상 메모리이다. 또한 가상 메모리를 통해 프로세스간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있다. 가상 메모리의 기본 아이디어는 프로세스는 가상 주소를 사용하고, 데이터를 사용(읽고/쓰기) 할 때 물리 주소로 변환해주면 된다는 것이다. 즉, 가상 메모리 시스템을 사용하기 위해서는 가상 주소(virtual add..

[운영체제] Semaphore와 deadlock, starvation

+ 운영체제를 공부중이고, 오늘은 Semaphore와 deadlock, starvation에 대해서 공부하였는데...ㅠ 해당 내용에 대해서는 깊은 이해가 아직 부족합니다. 앞으로 계속 보충하여 해당 포스트를 수정해 나갈 것입니다. [운영체제] Thread 여기서 thread의 동기화 이슈를 살펴보았다. 다시 한번 정리해보면, 공유 데이터(shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다. 이를 해결하기 위한 몇가지 충족 조건 1) Mutual Exclusion 이를 해결하기 위해서는 Mutual exclusion(상호 배제)기법이 필요하다. 스레드는 프로세스의 모든 데이터에 접근 할 수 있으므로 여러 스레드가 변경하..