순욱(운영체제) 살리기

구름미각·2024년 11월 22일
0
post-thumbnail

승상께서 찬합을 보내셨구나


(순욱은 조조가 보낸 찬합을 연다.)
(그러나 찬합에는 아무 것도 들어있지 않다.)

승상께서 더 이상 내가 쓸모 없다고 하시니, 더 살아 무엇 하겠더냐!

최근에 순욱 살리기에 진심인 조조라는 밈을 보게 되었다.

조조가 빈 찬합을 주면 순욱이 자살할 것을 알기 때문에 어떻게든 순욱을 살리고자 도시락에 이것 저것 넣어보는 식으로 일부러 다른 방법을 택하지만, 순욱은 어떤 방향으로든 승상이 자신이 필요없음을 나타내는 수단으로 판단하여 자살을 막지 못했다는 밈이다.

순욱이라는 인물을 설명하자면 조조의 위나라 건국의 일등 공신인 전략가이다.
편하게 제갈량 포지션이라고 생각하면 된다.
순욱은 조조에게 항상 성실히 조언하고 충성했으며, 그의 판단력과 능력 덕분에 조조는 많은 어려움 속에서도 제후들과의 싸움에서 우위를 점할 수 있었지만

순욱은 조조가 세력을 구축해가는 과정에서 유능한 인재를 소개하고 영입하는 역할을 맡는 면에서 운영체제와 비슷하다고 할 수 있겠다.
조조(서버)가 순욱(운영체제)가 없다면 이렇게 다양한 법(어플리케이션)을 만들고 실행할 수 없었다.

그러나 가끔씩 운영체제도 맛이 가서 못쓰는 경우가 존재 한다.
아래 경우들은 우분투를 이용했을 때의 가정이다.
그 이유를 하나 하나 찾아 보기 전에 운영체제가 어떻게 동작하는 지 간단하게 알아보자.

운영체제가 스스로 자신을 불러오는 방법

1. 전원 공급 후 부트 로더 실행

컴퓨터의 전원이 켜지는 동시에 메인보드에 내장된 바이오스/UEFI가 하드웨어 상태를 검사한다. 이는 운영체제가 스스로 하는 것이 아니다.

문제 없다면 하드 디스크나 USB같은 저장 장치에서 부팅 가능한 장치를 찾는다.
찾았다면 부트 로더를 메모리에 가져온다.
윈도우에서는 Windows Boot Manager에, 리눅스 계열에서는 GRUB에 해당 된다.
메모리에서 실행되는 부트 로더는 운영체제를 작동시키기 위한 초기화를 진행한다.

순욱으로 비유하자면 아래와 같다:

조조(서버)가 전쟁을 시작하려면 먼저 순욱(운영체제)이 작전 준비를 해야 합니다.
순욱은 자신의 부하들(바이오스/UEFI)을 통해 병사들의 상태(하드웨어)를 점검합니다.
예를 들어, 병사(메모리, CPU, 저장장치)가 제대로 훈련되고 무장을 갖추었는지 확인합니다.
모든 준비가 끝나면 순욱은 각 부대의 역할을 배분하며 전쟁 준비(부트 로더 초기화)를 마칩니다.
조조의 명령(운영체제 커널)을 받아 실행하기 위한 토대를 마련합니다.

2. 운영체제 커널 로드

커널은 하드웨어와 소프트웨어 간 통신을 가능하게 하는 중요한 인터페이스이다.
부트 로더가 정상적으로 작동될 경우에는 부트 로더가 운영체제 커널을 메모리에 가져와서 연동된 하드웨어 장치를 초기화하고 필요한 드라이버를 활성화하여 사용자가 컴퓨터와 연결된 인터페이스들(예시: 네트워크, 디스플레이, 키보드 등)을 사용할 수 있게 해준다.

순욱으로 비유하자면 다음과 같다.:

순욱은 조조의 핵심 전략(커널)을 직접 수행합니다.
이를 위해 조조가 보낸 지휘관(드라이버)을 배치하고, 모든 군사 자원(네트워크, 무기, 병참)을 연결하여 작전을 개시할 준비를 합니다.
순욱이 없었다면 조조의 명령은 단순한 지시로 끝나버렸을 것입니다. 하지만 순욱은 그 명령을 각 부대에 전달하고 실행 가능한 상태로 만듭니다.

3. 사용자 프로세스 초기화

연동된 부품과의 모든 드라이버가 활성되고 나서 커널은 파일 시스템을 마운트 하여 디스크에 접근할 수 있도록 한다.

그리고 파일 시스템에 저장된 시스템 설정 파일들(네트워크 정보, 저장된 디바이스 이름, 백그라운드 어플리케이션등)이 실행되어 마침내 운영체제는 자기 일을 할 준비가 끝났다.

순욱으로 비유하자면 다음과 같다:

모든 준비가 끝난 후, 순욱은 각 군사 단위(파일 시스템)를 배치하고 전쟁에 필요한 각종 정보를 설정합니다.
예를 들어, 부대의 위치, 보급로, 병참 계획 등을 확인하고 조정합니다.
이제 조조는 순욱 덕분에 자신만의 세부 전략(사용자 프로세스)을 수행할 준비가 끝났습니다.
군대는 명령에 따라 움직이며, 순욱은 군 전체의 원활한 운영을 보장합니다.

운영체제가 고장나는 3가지 이유

부트 로더 손상

부트 로더는 운영체제가 시작되기 전에 필수적인 초기화를 수행하는 프로그램으로, 컴퓨터가 켜질 때 가장 먼저 실행된다. 이게 없으면 운영체제가 메모리에 올라가지 못하고, 부팅 자체가 불가능해진다. 부트 로더는 시스템이 정상적으로 작동할 수 있도록 문을 열어주는 열쇠라고도 할 수 있다.

순욱으로 비유하면, 중요한 군사 작전에서 명령이 제대로 전달되지 않아 혼란이 발생한 상황이다. 예를 들어, 병사들이 진지를 구축하거나 이동해야 하는 명령을 받지 못하면, 전체 군대의 작전이 마비되어 조조는 결국 패배를 하게 되고 순욱도 죽는다.

물론 해결방법은 있다.
1. 부트 로더 구성 파일을 점검하고 수정한다.
2. 복구 모드에서 부트 로더를 재설치하거나 재설정한다.
3. 최악의 경우 운영체제를 다시 설치한다.

버퍼 오버플로

버퍼 오버플로는 프로그램이 메모리 할당 크기를 초과하여 데이터를 처리하려고 할 때 발생하는 오류다. 주로 메모리 관리가 제대로 되지 못했거나, 시스템 자원이 부족한 경우 이런 문제가 나타난다. 잘못하면 시스템이 예기치 못한 동작을 하거나, 최악의 경우 완전히 중단된다.

순욱으로 비유하자면, 군자금이 삭감되었을 때 잘못된 예산안이 장군들에게 전달되어 반란이 발생하는 상황이다. 충분한 자원이 없으면 병사들이 불만을 품고, 군대의 체계가 붕괴되어 조조는 결국 위공에서 물러나고 순욱도 죽는다.

해결 방법:
1. 프로그램에서 데이터를 처리할 시 크기를 명확히 정의해서 오버플로우가 일어나지 않도록 한다.
2. 그냥 부족한 경우에는 필요없는 프로세스를 죽인다.

메모리 누수

메모리 누수는 운영체제가 특정 작업에 사용된 메모리를 작업이 종료된 후에도 반환하지 않는 현상이다. 필요한 메모리 보다 더 많은 메모리를 먹게 되어 연산 능력이 저하될 수 있다.

순욱으로 비유하자면, 조조가 새로운 작전을 계획하면서 계속해서 불필요한 일을 순욱에게 맡기는 상황과 비슷하다. 순욱은 모든 일을 처리하려다 점점 지쳐가고, 결국 중요한 군사 작전에도 참여하지 못하게 되며 체력이 소진되어 효율을 잃게 되며 결국 허탈하여 죽게 된다.

해결 방법:
1. 메모리를 과도하게 사용하는 프로세스를 종료한다.
2. 코드 짤 때 메모리 누수를 방지하는 최적화 코드를 짠다.

결론

보통 이 경우는 저사양 컴퓨터를 다루는 경우에 발생하는 데, 구형 노트북에 우분투를 깔아서 사용하고 있던 나에게 발생했다는 것이 문제였다.

내가 사용한 구형 노트북은 약 15년 넘은 삼성 구형 노트북이었다.
이전까지 방치되어 있었지만 윈도우와 랜선을 사용해 웹 브라우징이 가능한 노트북이어서 느리지만 적당히 사용하라면 사용할 수 있는 그런 노트북이었다.

서버로 활용하고 싶었던 나는 gui인 윈도우말고 우분투를 운영체제로 선택해서 사용하고 있었다.
그러나 구형 노트북의 메모리가 그리 크지 않아서(약 4GB 정도) 그런건지도 몰라도 어느 날 갑자기 꺼지더니 busybox로만 접근이 가능한 상태가 되었다.

우선 내가 시도한 방법은 다음과 같다.

  1. 파티션 점검: fsck 명령어를 사용해 파일 시스템 오류를 수정하기.
  2. 새 파티션 생성: gparted로 기존 파티션을 삭제하고 새로 만들기.

알고 보니 버퍼 오버플로로 인한 메모리 오류인 것으로 밝혀져 쉬운 문제라고 생각하여 파티션을 점검하고 새 파티션을 만들어서 시도했지만 실패하여 결국 USB로 다시 우분투를 설치할 수 밖에 없었다.

결론 백업을 하는 습관을 잘 들이도록 하자.

profile
(돈과 인맥을 만들어 나가는)학생 개발자

0개의 댓글