CS

    [CS] SOLID

    SOLID에 대해서 이전의 글이 있으나, 사내 스터디에서 SOLID 부분을 맡게 되었고 다시 한번 보면서 디깅하는 시간을 갖도록 하기로 하였다. 이전 글 https://kbcoding.tistory.com/63SOLID단일 책임 원칙(SRP : Single Responsibility Principle)개방 폐쇄 원칙(OCP : Open-Closed Principle)리스코프 치환 원칙(LSP : Liskov Substitution Principle)인터페이스 분리 원칙(ISP : Interface Segregation Principle)의존성 역전 원칙(DIP : Dependency Inversion Principle)단일 책임 원칙(SRP : Single Responsibility Principle)“..

    [CS] 멀티 프로세스 (Multi Process) 멀티 스레드 (Multi Thread)

    컴퓨터 성능의 극대화를 위해 병렬처리는 필수적인 요소이다. 병렬 처리를 구현하는 주요 방법으로 멀티 프로세스와 멀티 스레드가 있다. 이 두 가지 방법은 각기 다른 장단점을 가지고 있으며, 상황에 따라 적합한 방법을 선택하는 것이 중요하다. 이번 글에서는 멀티 프로세스와 멀티 스레드의 차이점을 비교하고, 각 방법의 장단점을 살펴본 후 상황에 맞는 적합한 방법을 제안하고자 한다.멀티 프로세스 (Multi Process)멀티 프로세스는 여러 개의 프로세스를 생성하여 병렬로 작업을 수행하는 방식으로 각 프로세스는 독립적인 메모리 공간을 가지 별도의 자원을 사용한다.장점안전성: 각 프로세스는 독립적인 메모리 공간을 가지므로 하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스에 영향을 미치지 않는다.병렬성: ..

    [CS] Thread 상태, TCB, 위치

    [CS] Thread 상태, TCB, 위치

    Thread스레드란, 프로세스 내에서 동시에 진행되는 작업 혹은 흐름의 단위를 의미하는데 우리는 식당에서 주문(작업)을 하면 주방(프로세스)에서는 요리사(스레드)는 각각의 요리를 준비한다.프로그램은 하나 이상의 프로세스를 가지고 프로세스는 하나 이상의 스레드를 가진다.스레드 자원스레드끼리는 프로세스의 자원을 공유하면서 프로세스의 실행 흐름의 일부가 되기 때문에 동시에 작업이 가능하다.프로세스는 위와 같이 하나의 프로세스에 복수의 스레드가 작동을하는데 프로세스의 Stack을 할당받아 복사하고 Code, Data, Heap은 프로세스 내의 다른 스레드들과 공유된다. 따라서, 아래와 같이 각각의 스레드는 별도의 Stack을 가지고 있지만 Heap 메모리는 고유하기 때문에 서로 다른 스레드에서 가져와 읽고 쓸 ..

    [CS] Process, PCB, Context Switching

    [CS] Process, PCB, Context Switching

    프로세스와 스레드 엄청 많이 들어보는 말이지만 막상 딥다이브를 경험해보다 보면 기본 지식이 부족하다는 것을 종종 느낄때가 있다. 결국 컴퓨터로 만드는 프로그램은 컴퓨터 과학(CS)을 기반으로 만들게 된다. 그렇기에 더욱 기본을 탄탄하게 다지는 것에 대해서 중요성을 느끼고 프로세스와 스레드에 대한 차이를 기반으로 멀티 프로세스 스레드 환경에서 어떻게 작동을 하며 여기서 공유하는 영역은 어디며 공유를 하면 어떠한 장단점이 있고 문제점을 보완하기 위해 어떠한 개념들이 적용되었는지에 대해서도 정리를 해보고자 한다.우선, 해당 글에서는 프로세스와 PCB를 우선적으로 정리한다.프로세스프로세스는 컴퓨터 프로그램의 인스턴스라고 하며 프로그램을 실제로 CPU의 자원을 통해서 실행하는 것을 의미한다.프로세스 구조Stack..

    [CS] 컴퓨터의 구성(Software, Hardware, SystemBus)

    [CS] 컴퓨터의 구성(Software, Hardware, SystemBus)

    컴퓨터의 구성 하드웨어(Hardware): 컴퓨터를 구성하는 기계적 장치 소프트웨어(Software) : 하드웨어의 동작을 지시하고 제어하는 명령어 집합 하드웨어(Hardware) CPU(중앙처리장치) : 프로그램의 모든 정보를 처리하는 역할을 담당한다. RAM(주기억 장치) : 프로그램 실행과 휘발성 데이터를 저장하는 공간 HDD,SDD(보조기억 장치) : 내장형 기억 장치로 비휘발성 데이터를 저장하는 공간 IO Device(마우스, 프린터, 모니터 등) 소프트웨어(Software) 시스템 소프트웨어(System Software) : OS, 로더, 장치 드라이버, 컴파일러 응용 소프트웨어(Application Software) : 크롬, 유튜브, 멜론 등 펌웨어(Firmware) 특정 하드웨어 장치에..