반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

웹풀스택 공부 중

운영체제 (OS) 와 프로그램의 기초 본문

웹개발/웹 개념

운영체제 (OS) 와 프로그램의 기초

lukeit 2024. 8. 16. 15:50

OS 및 프로그램의 동작원리

  • 응용 프로그램 == 프로그램 == Application
  • 하드웨어 = Program이 동작되는 머신
    • 내부자원: CPU + Memory
    • 외부 자원 (입출력: Input Output): 네트워크 IO, 저장장치 IO, Mouse, Keyboard, ...
    • 속도가 제일 느림
    • 용량이 제일 큼
  • 소프트웨어 = OS (시스템 소프트웨어) + Application
    • OS: OS 운영체제 - 아래 Applicationd에게 하드웨어를 제공함
    • Application
      • Shell: 유저가 Kernel을 직접 다루기는 어려워 응용 소프트웨어로 간편한 제어 및 사용을 제공함
      • 그 외의 모든 Application: 유저가 다운받고, 설치해서 사용하는 모든것
    • 두가지 API
      • OS: 하드웨어를 사용하는 방법
      • Shell = OS를 사용하기 위한 API를 더 쉽게 만들어주는 API = OS를 더 잘 사용하게 해줌!
    • 동작 원리:
      • OS (= Kernel)은 커널 부팅 직후 초기화 프로세스를 시작함
        • 시스템에 필요한 프로세스가 자동을 실행되는 단계
        • 초기화 프로세스:
          1. Karnel(커널) 부팅이 끝남
            • 하드웨어에 문제가 없는지 확인
            • OS가 하드웨어의 모든 기능을 제어하게 되었을 때
          2. 초기화 프로세스 준비:
            • 앞으로 필요한 모든 프로세스를 시작함
            • PID 1번이 부여됨
          3. 초기화 시스템이 초기화 프로세스를 시작함
            • 구성파일을 읽고 구성 상태에 따라 서비스와 프로세스를 시작함
            • 초기화 시스템: Linux Service vs Daemon Management
              • 과거방법: SysVInit ("init")
                • 한번만 수행 후 종료 <- 이후 개별 프로세스 추적 불가능
              • 현재방법: SystemD (Daemon Process)
                • 한번 수행 이후 계속 Daemon 형태로 있어 개별 프로세스 추적이 가능함What is Daemon?
    • 프로세는 두가지 종류가 있음
      • Foreground Process (부모가 있음)
      • Background Process (부모가 없음)
        • 우리도 모르게 동작중인 Background Process를 Linux에서 Daemon이라고 부름
          • ex.) 리눅스에서 끝에 d가 붙는 프로스세스들이 모드 Daemon이다: sshd, httpd, ...

Program vs Process vs Thread

  • Program: 실행이 가능한 상태 (정적)
  • Process: 실행중인 상태 (동적) = 자원이 할당 됨
    • Heap 영역이 있음
    • 다수의 Thread를 가질 수 있음
      • Thread끼리 통신하기 위한 방법:
        • Process의 Heap 영역에서 통신을 진행함
          • Heap: 다리 역할
  • Thread:
    • Stack 영역이 있음
    • 함수를 실행하기 위한 것들이 들어가 있음
      • ex.) 변수, ...
    • Thread 마다 이것들을 가지고 있음
      • Program Counter = 실행 위치
      • 명령어 Register = 실행 함수
      • 스택 영역 = 실행 변수

Program이 실행되는 방식

  • CPU can only read Machine Language!
  • 프로그램이 동작하는 기본 원리: 기계어가 머신에서 해석되어 실행되는 것
    • 기계어(Program)을 만드는 방식 두가지 (만들어지면 Process라고 부름):
      1. Complie
        • result: Machine Language
        • "번역": 파일을 통으로 변환하여 수행함
        • ex.) 대표적인 Compile 언어인 C 개발시
          • C code -> GCC (Compiler) -> Assembly & Linking (Linking Libraries) -> Machine Lanuage Executable (= Binary code) -> Runs
      2. Interpret
        • result: Machine Language
        • "통역" 한줄 한줄 변환함
        • ex.) 대표적인 Interpreter 언어인 Java 개발시
          • 여기서도 Compile하는 과정이 필요함!
          • Java Code -> Compile -> JAR (중간 기계어로 변환하는 과정 - .class) -> JVM (Interpreter) -> 각 OS에 맞게 Interpret함 (각 OS 마다 읽을 수 있는 기계어가 다름) -> Runs
        • Compile과 Run Time이 나눠져 있음
          • Compile Error: 컴파일 시 인지되는 문법 오류 등을 발생시키는 오류
          • Runtime Error: 실제 동작중에 발생하는 에러

Blocking vs Non-Blocking & Synchrouous vs Asynchrous

  • 둘이 다르지만 조합해서 사용하진 않음
  • 연속성: Blocking & Non-Blocking = 일반적으로 CPU가 멈추는것을 의미함
    • Blocking: 하나의 작업이 간간히 방해받으며 수행된다
      • 방해: 주기적인 프로그램 실행상태를 확인하는 등
    • Non-Blocking: 하나의 작업이 어떠한 방해도 받지 않고 수행된다
    • 웹 개발에서 자주 사용되지 않음
    • CPU Scheduling과 관련있음
  • 동시성: Synchronous vs Asynchronous
    • Synchronous: 앞선 작업이 완료되어 그 다음 작업을 수행할 수 있다
      • 작업이 완료될때까지 하던 작업을 멈추고 대기함
    • Aysnchronous: 앞선 작업이 완료되는말든 그 다음 작업을 수행할 수 있다
      • 작업이 완료되는말든 하던 작업을 그대로 진행함
        • 작업이 완료되면 완료되었다고 응답을 받음: Callback 함수
    • Network 작업에 관련있음
반응형

'웹개발 > 웹 개념' 카테고리의 다른 글

Load Balancer와 배포방식의 기초  (0) 2024.08.16
Infrastructure: 서버의 구성 기초  (0) 2024.08.16
Hydration 개념 공략  (0) 2024.08.13
2주차  (0) 2024.08.13
1주차  (0) 2024.08.09