티스토리 뷰

ASAC/정리용

[02-02] 운영체제 기초

hee-ya07 2024. 12. 17. 22:21

1.1 하드웨어

: app(sw)가 구동되는 머신

: 내부 자원(CPU + Memory) + 외부 자원(I/O)(네트워크 IO, 저장장치 IO, 마우스 키보드 등)

 

1.2 소프트웨어

출처: asac 수업자료

: 시스템 소프트웨어(OS) + 응용 소프트웨어

-  시스템 SW: OS 운영체제(CPU의 자원 관리 <- 스케쥴링 알고리즘)

- 응용 SW: 어플리케이션(=프로그램), shell 

 

1.3 프로그램, 프로세스, 스레드

출처: asac 수업자료

프로그램 - 파일, 코드 등의 정적인 상태
프로세스 - 프로그램이 자원을 할당 받아 활성화된 상태
- 실행 단위가 상대적으로 크고,
- 하나의 프로그램에는 하나의 프로세스만 존재
- heap(바구니) + Stack(함수 호출)
스레드 - 프로세스 안의 작은 작업 단위
- 실행 단위가 상대적으로 작고
- 하나의 프로그램에 다수의 스레드 존재 가능
- 프로세스와 공유하는 heap
- 각 스레드마다 추가로 PC(실행 위치) + 명령어 레지스터(실행 함수) + 스택 영역(실행 변수) 을 가짐

- 병렬적 처리를 위해 프로세스 or 스레드끼리 자원 할당에 관한 논의 ==> 따로 정리

- 프로세스에는 2가지 종류

    =>Foreground Process (부모 O) + Background Process (부모 X)

- Daemon: 리눅스에서 의존/종속되지 않는 프로세스

  • 우리도 모르게 동작중인 Background Process 를 리눅스에서는 Daemon 이라 부른다
  • 리눅스 예시, 끝에 d 가 붙는 프로세스들이 모두 데몬을 뜻한다 : sshd, httpd, mysqld

2. OS 위 app 동작 원리 

: 운영체제 (커널)은 커널 부팅 직후 초기화 프로세스를 시작 = 시스템에 필요한 프로세스가 자동으로 실행되는 단계

  • 초기화 프로세스 (초기화 시스템명 : init 혹은 현대에는 systemd)
    • 커널 부팅이 끝나면 (운영체제가 하드웨어의 모든 기능을 제어하게 되었을 때)
    • 초기화 시스템은 구성 파일을 읽고 구성 상태에 따라 서비스와 프로세스를 시작
    • 초기화 프로세스는 모든 프로세스의 시작점이자 가장 첫 프로세스이기 때문에 1번 PID가 부여 (pid = 1)
  • 초기화 시스템 종류와 차이
    1. 과거 : SysVInit (프로세스명 init) ← Unix 에서 사용
      - service (start / stop / restart) ← /etc/init.d
      - 한번만 수행 후 종료 → 이후 개별 프로세스 추적 불가
    2. 현대 : SystemD (데몬 프로세스명 systemd) ← Linux Distributions(Ubuntu 등) 에서 사용
      - systemctl (start / stop / **status** / restart) ← /etc/systemd/system/.service
      - 한번 수행 후 계속 Daemon 형태로 떠있어서 이후 개별 프로세스 추적 가능

3. 컴파일과 인터프리팅: app 개발과 구동

- java기준

출처: asac 수업자료

  1. Binary Code -> 머신에서 실행
  2. Compile: .java(java code) -> .class(bytecode) 
    - java Compile == javac
  3. RunTime: .class(bytecode)  -> Binary Code
    - Interpreter == JVM

4. 연속성과 동시성

4.1 연속성: Blocking VS Non-Blocking

: 일반적으로 cpu가 멈추는 것을 기준으로 파악

- Blocking: 하나의 작업이 간간히 방해 받으면서 수행(이 때, 방해란 주기적인 프로그램 실행 상태를 확인하는 등의 행위)

- Non-Blocking: 하나의 작업이 어떠한 방해도 받지 않고 수행

특성 Blocking Non-Blocking
작업 처리 방식 요청한 작업이 완료될 때까지 대기 요청한 작업을 보내고 바로 다른 작업 진행
예시 - 파일 읽기
- 네트워크 요청에서 응답 대기
- 비동기 파일 읽기
- 네트워크 요청 후 다른 작업 진행
장점 구현이 간단 및 직관적 병렬 처리 가능 -> 높은 효율성
단점 다른 작업 진행 X 코드가 복잡해질 수 있음

 

4.2 동시성: Synchronous VS Asynchronous

: 일반적으로 병렬 처리를 의미

- 동기(Synchronous): 순차적인 작업 처리

- 비동기(Asynchronous): 병렬적인 작업 처리(바꿔가면서 쓱싹) -> 작업 완료 시, 완료 응답(Call bock)을 받음


깨알 비교 사전

* .jar, .war: java기반 app에서의 아카이브 파일 형식

특징 .jar(Java ARchive) .war(Web ARchive)
용도 java 애플리케이션 or 라이브러리 배포 java 웹 애플리케이션 배포
내용 클래스 파일, 리소스, 라이브러리 등 웹 애플리케이션의 웹 리소스 + 서블릿 관련 파일
구조 자유로운 구조(클래스와 리소스 포함) 고정된 구조
실행 환경 JRE에서 실행(터미널/명령어) 웹 서버(Tomcat)에서 실행
구성 요소 Java클래스, 라이브러리, 리소스 서블릿, JSP, HTML, JS, 이미지 등
배포 방식 로컬 파일 시스템에 배포 웹 서버에 배포(서버에서 동작)

'ASAC > 정리용' 카테고리의 다른 글

[03-01] HTTP Cache  (1) 2024.12.18
[02-02] 서버의 구성과 트래픽  (1) 2024.12.18
[02-02] Web Application Framework  (1) 2024.12.17
[02-02] 직렬화-역직렬화  (0) 2024.12.17
[02-01] 렌더링 최적화 전략  (0) 2024.12.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함