CS 관계 이해하기.

박지성 ·2025년 4월 12일


컴퓨터 공학을 배우면 운영체제, 컴퓨터구조, C언어를 배웁니다

각 개념을 따로 배우기 때문에 이게 왜 이러지? 이해가 안가는 부분이 생길 수 있습니다

컴퓨터의 전체적인 동작 과정을 이해하면 각 개념을 배울 때 조금이나마 쉽게 이해할 수 있을 것 같아 이번 글을 작성합니다

어느정도 운영체제, 컴퓨터시스템, C언어등 찍먹은 해봤다는 가정하에 설명합니다

개별적인 개념에 대한 설명은 생략하겠습니다

일반화로 틀린 부분이 있을 수도 있습니다
흐름만 이해해주세요


각 그림을 집중해서 키워드와 같이 하나하나 자세하게 봐주세요


컴퓨터 하드웨어 구조

운영체제나 컴퓨터 시스템을 배울 때 이런 구조를 볼 수 있습니다.


기본적인 컴퓨터 구조로

CPU, 메모리, I/O 장치들이 버스로 연결되어 있는 구조로 되어 있습니다.
버스 = 연결 통로


운영체제

운영체제를 배우면 보는 그림입니다.


프로세스

운영체제를 공부하면 프로세스에 대한 개념을 배웁니다.

참고
프로세서 : CPU (실제 하드웨어)
프로세스 : 추상화 개념


메모리 구조

저장장치를 공부하면 이런 구조에 대해서 배울 수 있습니다.


C언어 메모리

포인터를 공부하면서 메모리의 구조를 배웁니다.


가상 메모리

운영체제에서 가상 메모리를 배웁니다.


생각하기

앞에 나열 된 그림과 개념을 보면서 서로 연관되거나 같이 사용되는 개념이 머리에서 그려지는지 생각해 봅시다

  • 컴퓨터 하드웨어 구조
  • 운영체제
  • 프로세스
  • 메모리 구조
  • C언어 메모리
  • 가상 메모리

키워드와 위의 그림을 다시 보면서 서로의 관계를 이해해 보겠습니다
개념을 생각하고 그림을 참고해서 이해하면 좋겠습니다

  1. C언어를 배울 때 보는 메모리와 프로세스를 배울 때 보는 메모리를 비교해 봅시다
    -> 같은 형태를 가지고 있는 것을 볼 수 있습니다

    참고
    C 언어에서는 코드 흐름상 스택 먼저 썼다가 힙을 쓰지만,
    운영체제 입장에서 보면 힙이 아래에서 위로,
    스택은 위에서 아래로 커진다.
  2. 운영체제에서 가장 아래에 있는 하드웨어가 상세하게 어떤 구조로 되어 있는지 컴퓨터 하드웨어 구조를 통해 이해할 수 있습니다

  3. 컴퓨터 하드웨어를 공부하면서 메모리 계층 구조를 이해할 수 있습니다
    -> 메모리 계층구조가 하드웨어에서는 어디에 위치하고 있는지

  4. 운영체제 그림에서 프로세스가 어디에 위치해 있는지 확인해 볼 수 있습니다
    -> 또한 프로세스의 내부는 어떤 메모리 구조로 되어 있는지 볼 수 있습니다


그림으로 이해하기


그림을 보면 (관계를 집중해서 하나 하나 이해하면서)

  1. 하드웨어 구조를 자세하게 표시하고
  2. OS를 표시하고
  3. 프로세스 안에 있는 메모리 구조까지 한번에 표시하고
  4. 메모리 계층 구조를 하드웨어와 함께 보고 이해하며
  5. 프로그램이 안에서 메모리를 참조하는 모습을 보고
  6. 실제 물리적 메모리 주소로 저장되는 과정

참고 : 프로세스 안에 있는 메모리 구조는 가상 메모리 구조입니다.
이 그림을 통해 키워드와 개념을 이해해보면 좋겠습니다.


정리

  1. 우리가 C언어를 배울 때 포인터가 메모리를 참조한다는 것은 프로세스 안에 있는 가상 메모리 주소를 참조한다는 것을 알 수 있다

  2. 이를 통해 hello.c같은 프로그램이 프로세스 안에서 실행되는 것을 알 수 있다.

  3. 프로세스 안에서 가상 메모리 주소를 참조하면 실제 하드웨어에서는
    가상 메모리 주소 지정 -> MMU를 통해 실제 메모리 주소로 변환 -> 실제 메모리 주소에 저장 또는 읽기의 동작 과정을 이해할 수 있다.

  4. 3번의 과정을 통해 메모리를 읽을 때 메모리 계층 구조의 개념이 적용되서. 레지스터-> 캐시 -> 메모리 순으로 확인을 한다는 것을 확인할 수 있다.

  1. C언어를 공부할 때 프로세스 안에서 C언어 프로그램이 동작하고
    포인터가 프로세스 안에 있는 가상 메모리를 참조한다는 것을 이해할 수 있다.
계층설명
하드웨어실제 장치. CPU, RAM, HDD 등
운영체제(OS)하드웨어를 관리 + 사용자 프로그램 실행 환경 제공
프로세스프로그램이 실행되면서 운영체제가 만들어준 실행 단위
가상 메모리각 프로세스에 독립된 주소 공간을 제공 (보안 + 추상화)
C언어이 위에서 돌아가는 고급 언어. 포인터는 이 가상 메모리를 참조
MMU가상 주소를 실제 물리 주소로 바꿔주는 장치
메모리 계층 구조레지스터, 캐시, RAM, 디스크로 이뤄진 속도-용량 tradeoff 구조

추가

이해하고 다시 공부하면 좋은 것

  • 가상 메모리의 원리와 가상메모리가 실제 메모리와 HDD와 어떤 관계인지 이해해보기
  • 운영체제에서 프로세스가 어떻게 돌아가는지 이해해보기
  • 메모리 계층 구조를 이해하고 캐시히트와 캐시미스에 대해서 이해해보기
  • 가상 메모리가 MMU를 통해 물리 메모리에 저장되는 과정을 이해해보기

각 개념을 정리하고 개념사이 관계를 이미지와 키워드를 통해 이해하고
이를 바탕으로 추가 내용의 개념을 이해하면 컴퓨터의 대한 구조가 쉽게 그려지고
쉽게 이해할 수 있다고 생각합니다.

결국 우리가 int* p = &x; 이렇게 C에서 쓰는 포인터는
“프로세스 안에 만들어진 가상 메모리 공간의 주소”를 참조하는 것,
이 주소는 실제 메모리 주소로 MMU에 의해 매핑.
그 뒤의 동작은 모두 운영체제가 해주는 일.

profile
개발 블로그 맞음.

0개의 댓글