컴퓨터는 기계적인 부품을 이루는 하드웨어와 그 부품을 작동시키는 소프트웨어로 이루어져 있습니다
하드웨어는 CPU(중앙처리장치)와 메모리(RAM, ROM), 저장장치(HDD, SSD, USB), 그래픽 처리장치, 입출력장치로 이루어져 있습니다
소프트웨어는 시스템소프트웨어와 응용소프트웨어로 이루어져 있는데 시스템소프트웨어는 컴퓨터를 이루고 있는 기본적인 부품인 하드웨어를 작동시키는 역할을 하며 응용 소프트웨어는 사용자의 필요에 따라 설치하여 시스템소프트웨어과의 상호작용으로 작업을합니다
시스템소프트웨어는 운영체재(OS), 링커, 로더, 컴파일러, 어셈블러, 유틸리티 등으로 되어있는데 이 글에서는 시스템소프트웨어의 운영체제(OS), 컴파일러, 유틸리티에 대해서 알아보겠습니다
운영체제(Operating System)
컴퓨터 하드웨어의 작동을 관리해 주면서 동시에 여러 애플리케이션이 작동할 수 있도록 하는 역할을 합니다
운영체제가 작동하는 순서; 컴퓨터의 전원을 켜면 전원을 공급하는 부품인 파워서플라이는 메인보드에 부착된 부착된 장치들(CPU, 디스크, 메모리)에게 전력을 공급합니다
그리고 운영체제(OS)가 실행되기 전까지 컴퓨터의 부팅작업이 시작되는데 제일 먼저 CPU는 ROM에 저장되어 있는 BIOS를 로드합니다 그리고 BIOS는 컴퓨터에 대한 정보를 화면에 표기하는 등 하드웨어가 정상적으로 작동하는지를 점검하는데 이를 POST(power on self tes)라고 합니다
부트로더는 하드디스크에 저장되어 있는 OS를 가져와서 RAM으로 옮깁니다

부팅이 끝나고 OS가 성공적으로 실행이 되면 OS는 대기하고 있던 첫 번째 프로세스를 실행합니다 그리고 인터럽트가 발생하면서 CPU는 각종 작업을 처리합니다
인터럽트란 CPU가 프로그램을 수행하고 있을 때 입력, 출력등의 상황이 발생합니다 이것을 인터럽트라 하고
그러면 CPU는 수행 중이던 작업을 멈추어 따로 저장하고 인터럽트의 작업을 먼저 수행하고 그 인터럽트가 발생된 주소로 돌아가 다음 작업의 명령어가 들어올 때까지 대기상태가 됩니다
컴파일러
컴퓨터는 0과 1의 언어만 사용하기 때문에 사람이 사용하기에는 굉장히 불편한 점을 가지고 있습니다 그래서 사람이 사용하기에 편리한 언어로 보완하였는데, 프로그래머가 사람이 편하게 사용하는 언어를 사용하여 프로그램한 데이터를 컴파일러라는 소프트웨어로 컴퓨터가 이해할 수 있는 낮은 단계의 기계언어로 바꾸어주는 소프트웨어를 말합니다
컴파일의 과정;
첫 번째 과정은 프로그래머가 프로그래밍 언어로 작성한 텍스트파일(소스코드)에서 불필요한 주석을 제거하고 자주 사용하거나 반복되는 작업의 명령어를 하나로 묶어서 한 번의 키 동작으로 단순화(매크로) 시키는 등의 작업을 합니다
이렇게 첫 번째 처리과정을 거친 소스코드는 컴파일러에 의해 프로그래밍 언어보다는 한 단계 낮고 컴퓨터의 기계어보다는 한 단계 높은 언어인 어셈블리어로 변환됩니다
이어 어셈블리어는 다시 어셈블러에 의해서 0과 1의 기계어로 변환됩니다 어셈블리어는 0과 1의 조합으로만 된 컴퓨터 언어를 보다 사람이 사용하기 쉽게 기계어 1 라인 당 어셈블리어 1라인으로 해석되도록 되었습니다
그리고 마지막 단계에서는 여러 개의 파일과 데이터를 연결하여서 하나의 파일을 만들어 메모리에 로드될 수 있도록 합니다

유틸리티
유틸리티는 시스템의 유지보수나 컴퓨터가 정상적으로 운영되도록 관리하며 특정한 기능을 수행하기도 하는 소프트웨어입니다 DOS를 사용할 때는 직접 설치해야 했으나 현재는 운용체제 안에 포함된 경우가 많아서 직접 설치하는 일은 거의 없습니다
유틸리티의 종류는 파일압축 도구, 시스템 최적화 도구, 백업 및 복구 도구, 제거 프로그램, 바이러스 백신 소프트웨어, 디스크 정리 도구등이 있습니다
●파일 압축 유틸리티; 파일을 압축하거나 풀기 하는 프로그램입니다 대표적인 압축유틸리티로는 WinRAR,7-Zip, Bandizip, PeaZip, macOS내장 압축 도구, Windows 기본 ZIP기능 등이 있습니다
압축하는 형식에 따른 특징으로는 ZIP은 가장 호환성이 좋고 대부분의 운영체제에서 기본적으로 지원하는 형식입니다
RAR형식은 압축률이 가장 높고 분할해서 압축할 수 있습니다
7z은 오픈소스로 배포되고 있으며 압축률이 높습니다
TAR.GZ/ TAR.BZ2은 리눅스, 유닉스 계열에서 많이 사용합니다
●시스템최적화 도구; 불필요한 파일들을 정리하고 메모리를 최적화시키며 시작 프로그램을 관리하는 등 컴퓨터의 성능을 높이기 위한 도구들로 저장공간이 부족할 때 불필요한 프로그램을 정리할 때, 컴퓨터의 속도가 느려졌을 때 사용합니다
CCleaner, Glary Utilities, Advanced SystemCare, Wise Care 365, Windows내장 도구들이 있는데 가벼운 정도의 최적화는 CCleaner가 좋고 강력한 기능의 최적화는 Advanced SystemCare를 주로 사용합니다
백업 및 복구 도구; 데이터의 손실을 방지하고 문제가 발생했을 때 데이터를 복구해 주는 도구입니다
가장 많이 사용하는 백업 및 복구 도구들은 Acronis True Image, Macrium Reflect, Veeam Backup & Replication , Window내장유틸리티, Duplicati 등이 있습니다
●바이러스 백신 소프트웨어; 악성 바이러스나 소프트웨어등으로 인한 컴퓨터의 위험요소들을 찾아내어 차단시키는 프로그램으로 컴퓨터와 데이터를 보호합니다
●제거 프로그램; 필요하지 않은 파일이나 프로그램을 안전하게 제거하는 도구입니다