Computer Science

    [OOP] SOLID에 대한 이해

    로버트 마틴 아저씨가 설계한 객체 지향 프로그래밍의 원칙(SOLID)을 이해해 보자. SOLID는 5가지 기본 원칙의 시작 글자를 합친 것이며, 5가지는 다음과 같다. 단일 책임 원칙 (Single responsibility principle, SRP) 개방-폐쇄 원칙 (Open/closed principle, OCP) 리스코프 치환 원칙 (Liskov substitution principle, LSP) 인터페이스 분리 원칙 (Interface segregation principle, ISP) 의존관계 역전 원칙 (Dependency inversion principle, DIP) 이 원칙들은 유기적으로 연관되어 있지만, 이해하기 쉽게 각각 하나씩 분할 정복해 보자. # 단일 책임 원칙 (Single re..

    [Operating Systems] 프로세스와 쓰레드

    프로세스와 쓰레드에 대해 알아보자. # 프로세스(Process) 먼저, 프로세스란 실행 중인 프로그램을 의미한다. 프로세스는 디스크로 부터 메모리에 적재되어 CPU 할당을 받을 수 있게 되며, 운영체제로 부터 주소 공간, 파일, 메모리 등을 할당받는다. 이러한 프로세스의 특징으로는 다음과 같다. 프로세스는 각각 독립된 메모리 영역을 할당받는다 (아래의 메모리 구조 참고) 기본적으로 프로세스당 최소 1개의 쓰레드(메인 쓰레드)를 가지고 있다. 각 프로세스는 독립적인 메모리 공간에서 실행되므로 다른 프로세스에 접근이 불가능하다. 프로세스 간 정보를 주고받으려면 IPC(Inter-Process Communication)를 사용해야 한다. (파이프, 공유 메모리, 소켓 등을 이용한 통신) 프로세스의 메모리 구조..

    [Operating Systems] 인터럽트(Interrupt)

    OS의 인터럽트를 알아보자. # 인터럽트 인터럽트란 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외 상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것을 의미한다. 예를 들어, CPU를 점유한 프로그램이 프린터에 명령을 내려 프린팅을 요청해야 하는 상황을 가정해 보자. 만약, 프린터가 준비완료될 때까지 기다린다면 가장 비싼 자원인 CPU가 낭비되게 된다. 낭비를 막고 사용 효율을 높일 수 있는 방법은 프린터가 준비되면 CPU에게 준비됐음을 알리는 신호를 보내고, 그전까지 CPU는 다른 작업을 계속 수행하는 것인데 이것이 바로 인터럽트 메카니즘이다. 현대의 운영체제는 이러한 인터럽트에 의해 구동되는데, 운영체제는 인터럽트가 들어와야 CPU를 점유하여 사..

    [Operating Systems] 컴퓨터 시스템 구조

    컴퓨터 시스템 구조를 이해해 보자,, 컴퓨터는 CPU와 Memory로 구성되며, 그 외 디스크, 키보드, 프린터, 모니터 등과 같은 I/O 장치들로 구성된다. # CPU(Central Processing Unit) 두말할 것도 없다. 컴퓨터의 핵심 두뇌. 메모리에 적재된 instruction들을 실행하고 끝나면 interrupt를 체크하는 과정을 반복 수행한다. interrupt line : CPU는 Memory와 일을 하는 소울 메이트다. 헌데 만약 속도가 느린 I/O 장치와 일을 해야 할 경우 Device controller에게 일을 시켜놓고 CPU는 다음 업무를 처리한다. 이후 Device controller는 실행한 결과(ex. 키보드로 입력한 문자열)를 자신의 local buffer에 저장한 후..

    [Computer Networks] HTTP란?

    HTTP는 Hypertext Transfer Protocol의 약자로 다음과 같다. HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜 HTTP는 웹상에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트는 서버에게 Request(요청)를 보내고, 서버는 클라이언트에게 Response(응답)를 보내는 클라이언트-서버 구조로 이루어진 프로토콜이다. 이러한 HTTP 특징은 다음과 같다. TCP 커넥션 기반 : HTTP는 Application Layer에서 동작하므로 연결은 Transport Layer의 TCP 커넥션을 기반으로 한다. (TCP 커넥션을 유지하고 한 번에 여러 객체를 전송하면 persistent HTTP, TCP 커넥션을 끊고 연결 한 번에 하나의 객체를 전송하면 non-per..

    [Operating Systems] 운영체제란?

    운영체제란 무엇일까? 컴퓨터 시스템의 자원을 효율적으로 관리하는 시스템 소프트웨어 프로세서, 기억장치, 입출력 장치 등을 효율적으로 관리하며, 한정된 CPU와 메모리를 가지고 적절히 분배해준다. (무조건 1/n이 능사가 아니며, 마치 한 국가의 정부가 각 부처에 예산을 공평하고 효율적으로 분배하는 것과 같다.) 좁은 의미의 운영체제 : 커널 (운영체제의 핵심 부분으로 메모리에 항상 상주) 넓은 의미의 운영체제 : 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념 운영체제의 분류에는 크게 3가지가 있다. 동시 작업 가능 여부 단일 작업 : 한 번에 하나의 작업만 처리 다중 작업 : 동시에 두 개 이상의 작업 처리 사용자의 수 단일 사용자 다중 사용자 처리 방식 일괄 처리 (batch processin..