1. 컴퓨터 구조 & 운영체제 기초

규미·2025년 9월 7일

CS-study

목록 보기
1/10

CS(컴퓨터 공학)를 공부해야 하는 이유 💡

컴퓨터 과학의 기본 원리를 이해하는 것은 단순히 지식을 쌓는 것을 넘어, 문제를 해결하는 사고력을 키워줍니다. 마치 건축가가 건물의 구조를 알아야 튼튼한 집을 짓는 것처럼, 개발자도 컴퓨터의 기본 동작 원리를 알아야 더 효율적이고 안정적인 코드를 작성할 수 있습니다. 이는 기술 변화에 관계없이 지속적으로 성장할 수 있는 단단한 기반이 됩니다.

컴퓨터 구조

컴퓨터는 CPU, 메모리, 보조기억장치, 입출력장치 네 가지 핵심 부품으로 구성됩니다. 이 부품들은 메인보드를 통해 서로 연결되어 데이터를 주고받으며 컴퓨터를 작동시킵니다.
컴퓨터 구조

1. CPU(Central Proccessing Unit, 중앙 처리 장치)

CPU는 프로그램의 명령어를 해석하고 실행하는 컴퓨터의 두뇌 역할을 합니다.

CPU는 크게 제어장치, 연산장치(ALU), 레지스터로 구성되어 아래의 세 가지 핵심 기능을 수행합니다.

세 가지 핵심 기능

  • 연산 (ALU: Arithmetic Logic Unit)
    • CPU의 실제 계산을 담당하는 부분입니다. 산술 및 논리 연산을 수행합니다.
  • 제어 (Control Unit)
    • 컴퓨터의 모든 부품을 지휘하고 통제하며, 명령어 사이클의 전 과정을 관리합니다.
  • 저장 (Registers)
    • CPU 내부에 위치한 초고속 임시 저장 공간입니다. 연산에 필요한 데이터를 빠르게 보관하여 작업 효율을 높입니다.

작동 흐름 - 명령어 사이클

위의 세 가지 기능을 유기적으로 활용하여 명령어 사이클이라는 과정을 반복하며 명령어를 처리합니다.

  1. 인출 (Fetch): 제어장치가 메모리에서 실행할 명령어를 가져옵니다.
  2. 해독 (Decode): 가져온 명령어를 제어장치가 해석하여 어떤 작업을 수행해야 하는지 파악합니다.
  3. 실행 (Execute): 해석된 명령어에 따라 연산장치(ALU)가 계산을 수행합니다.
  4. 저장 (Store): 연산 결과를 다시 메모리에 저장합니다. (이 과정은 실행 단계에 포함되기도 합니다.)

2. 메모리(주기억장치)

메모리(주기억장치)는 컴퓨터가 현재 작업 중인 데이터와 프로그램을 일시적으로 저장하는 공간입니다.

역할 및 특징

  • CPU의 작업 공간: CPU는 보조기억장치에 직접 접근할 수 없으므로, 모든 작업은 반드시 메모리를 통해 이루어집니다. 따라서 메모리가 크고 빠를수록 컴퓨터의 처리 속도가 향상됩니다.
  • 주소 지정 가능성: 메모리는 주소(Address)를 통해 원하는 데이터에 바로 접근할 수 있습니다. 이는 무작위 접근(Random Access)이 가능해 순차적으로 데이터를 탐색할 필요가 없어 매우 효율적입니다.
  • 휘발성: 메모리는 휘발성을 지녀, 컴퓨터의 전원이 꺼지면 저장된 모든 데이터가 사라집니다. 중요한 정보는 반드시 보조기억장치에 따로 저장해야 합니다.

메모리 종류 비교 (RAM vs. ROM)

주기억장치는 용도와 특성에 따라 크게 RAMROM으로 나뉩니다.

RAM (Random Access Memory)ROM (Read-Only Memory)
읽기/쓰기읽고 쓰는 것이 자유로움읽기만 가능
데이터 보존성휘발성 (전원이 꺼지면 데이터 소실)비휘발성 (전원이 꺼져도 내용 보존)
주요 역할현재 실행 중인 프로그램 및 데이터 저장컴퓨터 시동에 필요한 기본 정보 저장 (예: BIOS)
특징용량이 클수록 여러 작업을 동시에 처리 가능내용이 거의 변경되지 않음

3. 보조기억장치(Secondary Storage)

보조기억장치는 컴퓨터의 메인 저장소 역할을 합니다. 전원이 꺼져도 데이터가 사라지지 않는 비휘발성이 가장 큰 특징입니다. CPU가 직접 접근하는 주기억장치(메모리)와 달리, 보조기억장치에 있는 데이터를 사용하려면 반드시 메모리로 옮겨와야 합니다.

주요 역할

  • 데이터의 영구 보존: 사진, 문서, 프로그램 파일 등 중요한 데이터를 장기적으로 저장합니다.
  • 주기억장치의 용량 확장: 주기억장치(RAM)의 용량 한계를 보완하여, 용량이 큰 프로그램이나 데이터를 저장할 수 있게 해줍니다.

보조기억장치 종류 비교

HDD (하드디스크 드라이브)SSD (솔리드 스테이트 드라이브)USB/외장하드
저장 방식자성을 띤 원판(플래터) 회전반도체(플래시 메모리)플래시 메모리 또는 HDD/SSD
속도느림매우 빠름제품에 따라 다름
물리적 특성물리적 부품이 많아 충격에 약함
소음 발생
물리적 부품이 없어 충격에 강함
소음 없음
휴대성이 높고 이동에 용이
가격저렴함비쌈용량 및 방식에 따라 다양
주요 용도대용량 데이터 저장빠른 속도가 필요한 시스템
(운영체제, 게임 등)
데이터 이동 및 백업

4. 입출력(I/O: Input/Output) 장치

입출력 장치는 컴퓨터와 외부 세계를 연결하는 통로 역할을 합니다. 사용자가 컴퓨터에 정보를 입력(입력 장치)하거나, 컴퓨터가 처리한 결과를 사용자에게 보여주거나 전달(출력 장치)하는 데 사용됩니다.

입출력 장치의 역할

  • 사용자와의 상호작용: 키보드로 글자를 입력하고 마우스로 화면을 조작하는 등, 사용자가 컴퓨터와 소통할 수 있도록 돕습니다.
  • 데이터의 변환: 외부에서 들어오는 아날로그 신호를 컴퓨터가 이해할 수 있는 디지털 신호로 바꾸거나, 그 반대의 역할을 수행합니다.

입력 장치의 종류

컴퓨터가 외부로부터 데이터를 받아들이는 장치로 키보드, 마우스, 마이크, 스캐너 등이 있습니다.

출력 장치의 종류

컴퓨터가 처리한 결과를 외부로 보내는 장치로 모니터, 프린터, 스피커, 프로젝터 등이 있습니다.

운영체제의 역할과 기본 개념

1. 운영체제(OS: Operating System)

컴퓨터의 하드웨어와 사용자(또는 프로그램)를 연결해주는 핵심 소프트웨어입니다. 컴퓨터의 모든 자원(CPU, 메모리, 저장장치 등)을 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있는 환경을 제공합니다.

운영체제의 필요성

운영체제가 없다면 컴퓨터를 사용하기가 매우 어렵습니다.

  • 하드웨어 제어의 복잡성 해결: 운영체제가 없다면 사용자는 키보드 입력 한 번을 위해 하드웨어의 주소와 제어 방식을 직접 알아야 합니다. 하지만 운영체제가 이 복잡한 과정을 대신 처리해주기 때문에 사용자는 명령어를 입력하는 것만으로 원하는 작업을 할 수 있습니다.
  • 자원 관리의 효율성: 여러 프로그램이 동시에 실행될 때, 한정된 CPU와 메모리를 어떻게 나눌지 관리하는 역할을 운영체제가 담당합니다. 이를 통해 충돌 없이 효율적으로 작업을 처리할 수 있습니다.

운영체제의 주요 역할

  • 자원 관리
    • 프로세스 관리: 여러 프로그램이 동시에 실행될 수 있도록 CPU를 분배하고 관리합니다.
    • 메모리 관리: 한정된 메모리를 효율적으로 나누어 프로그램에 할당하고, 메모리 공간이 부족할 때 가상 메모리를 활용해 보완합니다.
    • 파일 시스템 관리: 데이터를 파일 형태로 저장하고 관리하여 사용자가 쉽게 접근할 수 있게 합니다.
  • 사용자 인터페이스 제공 (UI: User Interface): 사용자가 컴퓨터와 상호작용할 수 있는 환경을 제공합니다. 텍스트 기반의 CLI(명령어 라인 인터페이스)와 마우스로 아이콘을 클릭하는 GUI(그래픽 사용자 인터페이스)가 있습니다.
  • 시스템 보호 및 보안: 여러 사용자나 프로그램으로부터 시스템 자원을 보호하고, 외부의 위협으로부터 컴퓨터를 지킵니다.
  • 입출력 관리: 프린터, 키보드, 마우스 등 다양한 입출력 장치와 데이터를 주고받는 과정을 제어합니다.

2. 프로세스(Process)

정의

컴퓨터에서 실행 중인 프로그램입니다. 우리가 어떤 프로그램을 더블클릭해서 실행하면, 운영체제는 이 프로그램을 메모리에 올리고 실행에 필요한 자원들을 할당해 주는데, 이 상태를 바로 프로세스라고 부릅니다. 같은 프로그램이라도 여러 번 실행하면 각각 다른 프로세스가 됩니다.

프로세스의 상태 전이

프로세스는 생성되어 종료될 때까지 여러 상태를 거치게 됩니다. 이 상태의 변화를 프로세스 상태 전이라고 합니다.

프로세스 상태 전이

  • 생성 (New/Create): 프로그램이 메모리에 적재되어 프로세스가 만들어지는 단계입니다.
  • 준비 (Ready): CPU를 할당받기 위해 대기하는 상태입니다. 여러 프로세스가 준비 상태에서 기다리며, 스케줄러에 의해 다음 차례를 기다립니다.
  • 실행 (Running): CPU를 할당받아 실제로 명령어를 실행하고 있는 상태입니다. 한 번에 하나의 프로세스만 실행 상태에 있을 수 있습니다.
  • 대기 (Waiting/Blocked): 특정 이벤트가 발생하기를 기다리는 상태입니다. 예를 들어, 사용자의 키보드 입력이나 디스크로부터 파일을 읽어오는 작업이 완료될 때까지 기다립니다.
  • 종료 (Terminated): 프로세스가 모든 작업을 마치고 종료된 상태입니다. 사용했던 모든 자원(메모리, 파일 등)은 운영체제로 반환됩니다.

3. 스레드(Thread)

정의

프로세스 내에서 실행되는 작업의 가장 작은 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 자원(메모리, 파일 등)을 공유하면서 각자 다른 작업을 동시에 수행할 수 있습니다. 예를 들어, 웹 브라우저 프로그램(하나의 프로세스)에서 동영상을 보면서 동시에 스크롤을 내릴 수 있는 것은 여러 스레드가 동시에 작동하기 때문입니다.

프로세스와 스레드의 차이

프로세스와 스레드는 멀티태스킹을 가능하게 하는 중요한 개념이지만, 자원을 공유하는 방식에서 큰 차이가 있습니다.

프로세스(Process)스레드(Thread)
자원 공유독립된 자원 소유
(별도의 메모리 공간, 파일 핸들 등)
프로세스의 자원 공유
(프로세스 내 메모리, 파일 등)
메모리 공간운영체제로부터 독립적인 메모리 공간을 할당받음프로세스의 메모리 공간을 공유하며 사용
생성/종료생성 및 종료에 많은 시간이 소요됨
(오버헤드가 큼)
생성 및 종료가 빠름
(오버헤드가 작음)
역할운영체제로부터 자원을 할당받는 작업의 단위CPU가 실제로 실행하는 실행의 단위
통신 방식IPC(Inter-Process Communication) 방식을 통해 통신프로세스 자원을 공유하므로 별도의 통신 방법 없이 통신 가능

멀티태스킹의 원리: 프로세스 기반의 멀티태스킹은 여러 프로세스가 독립적으로 실행되므로, 한 프로세스에 문제가 생겨도 다른 프로세스에 영향을 주지 않아 안정적입니다. 반면, 스레드 기반의 멀티태스킹은 같은 프로세스 내에서 자원을 공유하므로, 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받을 수 있지만, 자원 공유로 인해 프로세스 간 전환보다 훨씬 빠르고 효율적입니다.

4. 커널(Kernel)

정의

운영체제의 가장 핵심적인 부분으로, 하드웨어와 응용 프로그램 사이를 중재하는 역할을 합니다. 운영체제의 가장 낮은 레벨에 위치하며, 컴퓨터의 모든 중요한 자원(CPU, 메모리, 장치 등)을 관리하고 제어하는 '심장' 또는 '핵심'이라고 할 수 있습니다.

커널은 항상 메모리에 상주하며 실행됩니다. 사용자가 직접 접근할 수 없는 보호된 영역인 커널 모드(Kernel Mode)에서 작동하기 때문에 시스템의 안정성과 보안을 유지할 수 있습니다.

주요 기능

  • 프로세스 관리: 프로세스의 생성과 종료, 상태 전이를 관리하고, CPU 스케줄링을 통해 여러 프로세스가 공평하게 CPU를 사용할 수 있도록 합니다.
  • 메모리 관리: 한정된 메모리를 효율적으로 분배하고, 메모리 공간이 부족할 경우 가상 메모리 기법을 사용해 보조기억장치와 메모리를 교환하는 작업을 수행합니다.
  • 파일 시스템 관리: 데이터를 파일 형태로 저장, 삭제, 접근할 수 있도록 관리합니다.
  • 장치 관리: 마우스, 키보드, 프린터 등 다양한 입출력 장치와 데이터를 주고받는 과정을 제어합니다.
  • 시스템 호출(System Call) 처리: 응용 프로그램의 요청(예: 파일 열기, 네트워크 연결 등)을 받아 하드웨어에 접근할 수 있도록 돕습니다.

5. 시스템 호출(System Call)

개념과 역할

사용자 프로그램이 운영체제의 커널에게 특정 기능을 수행해달라고 요청하는 유일한 방법입니다. 사용자 프로그램은 시스템의 핵심 자원(하드웨어, 파일 등)에 직접 접근할 수 없기 때문에, 반드시 커널을 거쳐야만 합니다. 이러한 접근을 가능하게 해주는 것이 바로 시스템 호출입니다.

시스템 호출의 작동 방식

  1. 사용자 프로그램이 파일 열기, 화면 출력 등 커널의 도움이 필요한 기능을 호출합니다.
  2. 이 요청은 시스템 호출 인터페이스를 통해 커널에게 전달됩니다.
  3. 커널은 해당 요청을 받아 커널 모드에서 필요한 작업을 안전하게 처리합니다.
  4. 작업이 완료되면 커널은 결과를 다시 사용자 프로그램에게 전달합니다.

시스템 호출의 예시

  • 파일 및 장치 관리:
    • open(), read(), write(), close(): 파일을 열고, 읽고, 쓰고, 닫는 작업을 수행합니다.
    • ioctl(): 입출력 장치를 제어합니다.
  • 프로세스 관리:
    • fork(): 새로운 프로세스를 생성합니다.
    • exit(): 프로세스를 종료합니다.
  • 통신:
    • socket(): 네트워크 통신을 위한 소켓을 생성합니다.
    • connect(), send(), recv(): 네트워크 연결 및 데이터 송수신을 처리합니다.

5개의 댓글

comment-user-thumbnail
2025년 9월 7일

잘 정리 되어 있어서 이해가 잘 돼요!

답글 달기
comment-user-thumbnail
2025년 9월 7일

표로 나누어서 차이점 비교를 해주셔서 이해하기 정말 편했어요 특히 기능이 비슷하다고 생각한 스레드랑 프로세스 구분이 한 번에 잘되었어요

답글 달기
comment-user-thumbnail
2025년 9월 8일

시각적인 자료가 잘 배치되어 있어서 집중이 잘되네용 예시도 잘 적어주셔서 이해 하기 좋았어요!

답글 달기
comment-user-thumbnail
2025년 9월 8일

잘 읽었습니다!

답글 달기
comment-user-thumbnail
2025년 9월 8일

큰 제목 외에 소제목들로 자세히 정리해주셨네요! 잘 읽었습니당~~

답글 달기