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)
밑의 빌드를 통해 인간이 읽을 수 있는 코드를 기계가 읽을 수 있는 코드와 실행 파일로 만드는 언어를 말한다. - 빌드 순서
- 컴파일러를 통해 어셈블리 코드가 된다.
- 어셈블리코드는 다시 어셈블러를 거쳐서 오브젝트 코드가 된다.
- 오브젝트 코드는 링커를 통해 필요한 실행 파일의 형태를 갖춘다.
- 이 모든작업을 빌드라고 한다.
- Heap
데이터 구조와 변수 저장을 위해 동적으로 할당되는 RAM 의 메모리 영역이다.
이 때, 메모리 영역을 잘 사용하지 않으면
RAM 내 할당된 메모리 블록 범위를 넘어서 메모리에 액세스 하려고 할 때 메모리 오버플로우 라는 에러가 발생할 수 있다. - 컴파일 (Compile)
프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 말한다.
- 컴파일러(Compiler) : 소스코드를 읽어 기계어로 변환하고, 이를 실행할 수 있는 실행파일을 생성하는 빌드의 절차중 하나.
728x90
'Computer Science' 카테고리의 다른 글
[책: IT 세계의 괴물들] 반도체에 대해 (2) | 2025.03.09 |
---|