728x90
이 글은 ASAC 06기를 수강하며 강의 자료 참고 및 추가 자료 수집을 통해 작성된 글입니다.
OS 개요 및 프로그램 동작 원리
하드웨어
=> 프로그램(애플리케이션, 소프트웨어)이 동작되는 머신
- 내부 자원 : CPU + Memory
- 외부 자원 (입출력) : 네트워크 IO(LAN 선, RAM 카드), 저장장치 IO(외장하드), human-interface io(마우스,키보드)
저장장치
CPU와 물리적 거리가 가까울수록 데이터 액세스 속도가 빠르다.
거리가 가까울 수록 빠르지만 용량 작음
- 캐시
- 메모리
- 하드디스크
소프트웨어
시스템 소프트웨어(os = 커널) + 응용 소프트웨어(애플리케이션)
시스템 소프트웨어
OS(Operating System) : 하드웨어 사용을 위한 low level API. 사용을 위한 스펙
OS는 자원 관리를 한다. (할당, 회수) 프로세스 관리, 메모리 관리
ex) 윈도우는 하드웨어 조작을 위해 GUI에 좀 더 특화됨.
리눅스는 CUI(CLI)에 좀 더 특화됨.
응용 소프트웨어
- Shell
개발자가 OS를 사용하기 어려우므로, 한 번 더 감싼 high level API. 간편한 제어 및 사용을 제공하는 응용 소프트웨어이다. - 그 외 응용 소프트웨어
다운받고 설치하는 모든 것. 응용 소프트웨어 위에서 동작한다.
하드웨어, OS, Shell의 관계
하드웨어를 직접 조작 >> OS (하드웨어 조작을 위한 API) >> Shell (OS의 API. 조금 더 쉬운 조작을 제공)
프로그램, 프로세스, 스레드
프로그램, 프로세스, 스레드
프로그램
코드를 통해서 만들어진 정적인 파일이다.
프로세스
OS가 프로그램에게 자원(CPU, 메모리)을 할당한 후 실행중인 프로그램이다.
1개 프로그램에는 1개의 프로세스만 존재한다.
스레드
실행 단위가 작고, 1개의 프로그램(1개의 프로세스) 내에는 수많은(N개) 스레드가 존재 가능하다.
스레드마다 PC(Program Counter, 실행 위치), 명령어 레지스터(실행 함수), 스택 영역(실행 변수)를 가진다.
초기화 프로세스
커널 부팅 직후 시작된다. 초기화 시스템은 과거에 init, 현대에는 systemd
- 초기화 프로세스는 모든 프로세스의 시작점이자 가장 첫 프로세스이기 때문에 1번 pid가 부여된다.
- 초기화 시스템은 구성 파일을 읽고 구성 상태에 따라 서비스와 프로세스를 시작한다.
- 현재 systemd는 데몬 프로세스로 실행 후 OS 종료 전까지 종료되지 않고 상주한다.
(데몬 프로세스 = 백그라운드 프로세스. 데몬 프로세스들은 일반적으로 접미사 d가 붙는다.)
- 과거 SysVInit (프로세스 명 init) <- Unix에서 사용
- service (start / stop / restart) <- etc/init.d
- 한 번만 수행하고 종료된다. 이후 개별 프로세스 추적 불가
- 현대 SystemD (프로세스 명 systemd) <- Linux Distributions (Ubuntu 등) 에서 사용
- systemctl (start / stop / status / restart) <- /etc/systemd/system/.service
- 한 번 수행 후 Daemon 형태로 떠있어서 이후 개별 프로세스 추적 가능
728x90
'ASAC' 카테고리의 다른 글
[ASAC 06] 수평적 확장에 의한 다중 서버에서의 배포 전략 (1) | 2024.08.28 |
---|---|
[ASAC 06] 컴파일러 언어와 인터프리터 언어 (0) | 2024.08.28 |
[ASAC 06] 서버 구축 방식, Serverless, Load Balancer (3) | 2024.08.28 |
[ASAC 06] 데이터 직렬화와 역직렬화 (0) | 2024.08.28 |
[ASAC 06] 백엔드 개발의 목적 (1) | 2024.08.28 |