이 포스팅은 가볍게 이해하는 컴퓨터 시리즈 7 편 중 1 번째 글 입니다.
목차
최호성님의 유튜브 강의를 보며 기본적인 컴퓨터 구조를 이해하고 정리하자.
PC 조립 과정 보며 구조 이해하기
컴퓨터 하드웨어 구성 요약
다나와
다나와
이곳에 가면 컴퓨터 용어에 대한 간단한 설명들을 쉽게 알 수 있다.
컴퓨터란?
CPU가 가장 중요하다. 컴퓨터의 기본 정체성은 연산을 하는 기계이기 때문에, 이 연산을 담당하는 CPU가 컴퓨터를 거의 대표한다고 볼 수 있다. 요리에 비유한다면 좋은 칼, 좋은 도구 등이 될 수 있겠다.
하지만 재료가 없으면 요리를 할 수 없다. 따라서 우리는 CPU가 연산을 수행할 수 있도록 재료에 해당하는 메모리를 주어야 한다. 그 과정에서 보조 기억 장치인 RAM, HDD, SDD 등이 필요하다.
Interface
주변기기와 연결되는 지점
기본적으로 컴퓨터는 CPU, RAM으로 동작한다. 이 때 추가적인 기억 장치인 HDD, SDD들이 이 컴퓨터에 연결할 때 사용하는 것이 interface이다. 현재는 SATA라는 interface를 사용한다. SATA는 interface 중 하나이며, 어떤 장치를 연결하느냐에 따라 필요한 interface는 달라질 수 있다.
운영체제에서 사용하는 용어
기본적인 용어에 대해 이해하고 넘어가자.
동시성
여러 일을 여러 사람이 각자 동시에 하는 것
행위도 여러개, 주체도 여러개
병렬성
같은 일을 여러 사람이 동시에 하는 것
군대 삽질 분대가 다같이
행위는 하나, 주체는 여러개
병렬성은 동시성에 포함된다.
원자성
쪼개어 나눌 수 없는 연속된 일
어떤 일을 최대한 쪼갰을 때의 가장 작은 단위의 행위
원자성은 병렬성을 가지는 상태에서 동기화 라는 작업이 중요하다.
의존성
전제조건
행위에 대한 의존, 존립에 대한 의존
출근(행위)
출근 하기 위한 방법이 버스를 타야 가능하다고 생각해보자. 그렇다면 출근이라는 행위는 버스에 의존적이다.
자동차 부품(존립)
자동차를 구성하는 다양한 부품은 자동차라는 객체가 사라지면 그 부품들의 존재도 사라진다. 그렇다면 부품이라는 존립은 자동차에대해 의존성을 가진다.
동기화
원자성을 가지는 행위에 대해 시작과 끝을 알리는 행위
화장실 들어갈 때 문잠구는 거 규칙 준수의 개념과도 비슷하다.
예를 들어, 100개의 인형에 눈을 다는 작업이 있다고 하자. 그렇다면 이 작업은 동시성을 가진다. 그리고 같은 작업을 여럿이 달려들어 수행할 수 있기 때문에 병렬성도 가진다. 이 때, 하나의 인형에 눈을 다는 작업은 원자성을 가진다고 가정하자. 즉, 눈을 다는 작업은 한 사람만이 수행할 수 있고 눈을 다는 작업은 연속적이기 때문에 방해받을 수 없다. 이런 경우에 사람이 1000명이 있더라도 작업에 투입될 수 있는 최대 인원은 100명이다. 그런데 만약 하나의 작업을 수행하고 있는 인원에게 일이 없는 다른 사람이 방해한다면, 해당 작업은 충돌이 발생한다. 이런 과정을 막기 위해서 작업을 수행하는 인원은, 작업을 수행하기 전에 나 작업시작한다! 처럼 알려주는 행위가 필수적으로 요구된다. 이러한 알림을 동기화 라고 한다.
교착상태(Deadlock)
이러지도 저러지도 못하는 상태
화장실에 휴지 없어서 못나오는 상태
원자성을 보장 받는 행위에 대해서 행위가 끝나야 다음 처리가 이루어지는 상황에서 특정 조건 때문에 행위가 끝나지 않아 멈춰버리는 상태를 말한다. 심각한 논리적 오류 때문에 발생한다.
예외처리 잘해라
하드웨어, 운영체제, 프로세스, 스레드
컴퓨터가 ‘영토’라면 운영체제는 ‘정부조직’
스레드는 ‘개인’이고 프로세스는 ‘가족’
컴퓨터라는 하드웨어를 가지고 System software인 운영체제와, User software인 프로세스가 돌아가게 된다.
Kernel
운영체제의 근간을 이루는 핵심 코드
어떠한 방식으로 자원을 나눠주고, 프로세스를 관리하는지, 프로그램이 요구하는 시스템 콜 같은 중요한 작업을 수행하는 코드를 말한다. 그렇기에 어떤 커널을 사용하느냐에 따라 OS의 정체성이 규정된다. 이 부분이 손상될 경우 OS가 사용 불가능해 진다.
Virtual Memory
가족들은 보통 집에서 생활한다. 이 집은 컴퓨터에 대응해서 생각하면, 메모리 공간이다. 각각의 프로세스는 이러한 전용 공간, 즉 가상 메모리를 갖는다.
Thread
가족 안에 구성원들이 있고, 이 구성원들은 각자 자유로이 활동하듯이 프로세스 내에서 작동하는 개별 흐름(thread)이다. 해당 스레드는 속한 프로세스에 할당된 자원을 공유한다.
스레드는 프로그램의 흐름(연산의 흐름)에 있어서 가장 작은 단위를 뜻한다.