아직은 NULL NULL 합니다

[책: IT 세계의 괴물들] 소프트웨어에 대해_01 본문

Computer Science

[책: IT 세계의 괴물들] 소프트웨어에 대해_01

is낫널 2025. 3. 16. 18:30
728x90

서론 

테마별로 책에 대한 기록 중이다. 

테마 1이었던 반도체에 대해서는 이 글을 읽어보도록 하자. 

이번에는 테마2인 소프트웨어이다. 

바로 본론으로 들어가보자. 

 

소프트웨어

  • OS (Operating System : 운영체제)
    CPU, GPU 같은 반도체들에게 작업절차를 안내한다. 
    자세하게는 작업 스케줄링과 리소스를 관리한다. 
    OS 는 커널(kernel) 을 통해 작업절차를 전달한다. 
    그래서 순차적인 흐름은 어떠한 어플리케이션에서 시스템 호출이 들어오면, OS 는 커널을 통해 작업절차를 안내하는 형식이다. 
    더보기
    OS 에는 커널말고도 Device Driver, Memory management 라는 게 있다. 
    - Device Driver 는 키보드, 마우스, USB 등 외부 입출력 장치와 연결 및 통신을 제어해준다.
    - Memory Management 는 시스템 전체 메모리 사용량을 모니터링하며, 
      메모리가 부족하면 일부를 SSD 에 분배했다가 램에 공간이 생기면 다시 로드를 한다.
      또한, 다른 프로그램이 할당되지 않은 메모리를 마음대로 사용할 수 없게 접근을 막는다. 
  • 시스템 호출 (System Call) : 어플리케이션이 OS 에 특정 서비스에 대한 요청을 하는 것이다. 
    더보기
    예를 들어, PPT 어플리케이션에서 사용자가 저장버튼을 눌렀다고 가정했을 때
    1. PPT 어플리케이션은 OS 에게로 시스템 콜을 보낸다. 
    2. OS 는 커널을 통해 반도체에 작업절차를 전달한다. 
    3. CPU 는 메모리에서 작업절차를 검색하고 수행하는데, 이 때 CPU 는 PPT 와 같은 어플리케이션, OS 등의 작업절차를 직접 수행한다.
    4. RAM 은 CPU 에서 작업 중인 데이터를 SSD 에 저장한다. 
  • 커널 (Kernal) 
    커널은 위에서 언급했듯이 OS 가 CPU 나 GPU, RAM 에게 작업절차를 전달할 때 사용이 되기도 하지만 
    커널 스케줄러를 통해 반도체의 리소스들을 관리한다. 
    또한 어느 한 프로그램이 자원(CPU, GPU, RAM 등) 을 독점하지 못하게 다른 프로그램에도 자원을 할당하고 어떤 프로그램이 조용하면 대기상태로 만든다.
  • BIOS / UEFI
    컴퓨터가 켜지면 가장 먼저 동작해서 시스템 HW 를 초기화 시키고 부트로더를 실행시키는 펌웨어이다. 
  • 부트로더 
    컴퓨터가 켜지면 BIOS / UEFI 에 의해서 실행이 된 후 OS 를 SSD 에서 RAM 으로 로딩하는 펌웨어이다. 
  • 부팅
    사용자가 컴퓨터를 부팅하게 되면 BIOS 기상나팔이 울리고 ROM 에서 부트로더가 OS 를 싣고 출발한다. 
    그리고 부트로더가 OS 를 SSD 에 내려주고 SSD 에서 OS 는 RAM 으로 로딩시켜준다. 
    이러한 과정을 부팅이라고 한다. 
    더보기
    펌웨어 : 특정 하드웨어 장치에 포함된 영구적인 소프트웨어이다. 
    ROM : 한번 기록된 정보를 읽을 수만 있는 메모리 반도체로 비휘발성 메모리이다. 
    - 여기서 RAM 으로 로딩되는 이유로 OS 는 아주 중요하기 때문에 RAM 의 메모리 공간을 가장 먼저 확보해야하기 때문이다. 

 

 

구분 정의 예시
프로그램 시스템 소프트웨어  - 어플리케이션이 원활히 운영될 수 있도록 컴퓨터의 리소스를 관리한다. 
- 각종 장치와 프로그램을 지원/제어하는 필수 소프트웨어
OS
펌웨어
미들웨어 
드라이버
소프트웨어 플랫폼 등 
어플리케이션 소프트웨어 - 유저가 특정 목적을 위해 직접 사용한다.
- 특정 작업을 실행하면 컴퓨터의 리소스들이 이를 수행하도록 지시하는 소프트웨어  
게임
영상/음악 재생
문서 작성
웹 브라우저
주식투자 
금융거래
코딩 IDE 
영상편집
등 
데이터 유저가 프로그램을 사용하면서 저장, 파생되는 정보 게임 세이브 파일
인터넷 쿠키
GPS 메타데이터 등 

 

  • 1Byte : 소프트웨어를 표현하는 일반적인 단위인 8bit 
  • 기계어 : 2진수(바이너리) 로 구성된 컴퓨터 CPU 가 이해하고 실행할 수 있는 언어 
  • Bit Flip 
    메모리 상의 하나 혹은 그 이상의 비트가 0 에서 1이나 1에서 0 으로 바뀌는 현상이다. 
    이는 메모리의 정보가 실제와 다르게 저장되어 발생할 수 있다. 
    일반적으로 Bit Flip 은 반도체 자체나 트랜지스터의 결함, 전파장애, 고온 고습 등에 의해 발생한다. 

 

  • C 언어 
    • 최초 1972 년에 출시된 언어
    • 포인터 
      다른 변수의 메모리 주소를 저장하는 변수
      메모리 위치를 직접 조작할 수 있기에 효율적이고 유연한 프로그래밍 가능 
      이를 통해 메모리를 할당하고 해제한다. 
    • 메모리 사이즈가 작다. 
    • 컴파일 언어 (Compiled Language) 
      밑의 빌드를 통해 인간이 읽을 수 있는 코드를 기계가 읽을 수 있는 코드와 실행 파일로 만드는 언어를 말한다. 
    • 빌드 순서
      1. 컴파일러를 통해 어셈블리 코드가 된다. 
      2. 어셈블리코드는 다시 어셈블러를 거쳐서 오브젝트 코드가 된다. 
      3. 오브젝트 코드는 링커를 통해 필요한 실행 파일의 형태를 갖춘다. 
      4. 이 모든작업을 빌드라고 한다. 
  • Heap 
    데이터 구조와 변수 저장을 위해 동적으로 할당되는 RAM 의 메모리 영역이다. 
    이 때, 메모리 영역을 잘 사용하지 않으면
    RAM 내 할당된 메모리 블록 범위를 넘어서 메모리에 액세스 하려고 할 때 메모리 오버플로우 라는 에러가 발생할 수 있다. 
  • 컴파일 (Compile) 
    프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 말한다. 
    • 컴파일러(Compiler) : 소스코드를 읽어 기계어로 변환하고, 이를 실행할 수 있는 실행파일을 생성하는 빌드의 절차중 하나. 

 

 

728x90

'Computer Science' 카테고리의 다른 글

[책: IT 세계의 괴물들] 반도체에 대해  (2) 2025.03.09