모각코_3주차

Haegyeong Kim·2024년 7월 24일

모각코_2024

목록 보기
4/6

CS - 운영체제

Q. 백엔드 개발자가 OS 기본 지식이 필요한 이유

  • 로그 분석, 배포 설정, WAS설치, 대용량 트래픽 처리(메모리 관리, OS 구조), 서버 개발(프로세스 & 쓰레드, 멀티쓰래딩), Docker 등 컨테이너 환경 사용
  • 프로그래밍 언어는 OS API에 의존적이기 때문에 OS 지식 있는 경우 모든 프로그래밍 언어의 학습에 유리함

💡OS란?

컴퓨터를 사용할 때 편리하게 사용할 수 있는 도구 응용 프로그램

HW위에서 응용프로그램을 interface하는 역할

운영체제가 존재하는 목적 & 역할

  • Efficiency
    • OS를 통해서 HW를 사용하면 HW 사용 성능 Better
    • HW를 효율적으로 사용하기 위해 OS가 있어야함. 응용프로그램이 HW를 직접 다루면 성능이 비효율적임
  • Convenience
    - 사용자가 쉽게 사용할 수 있게 함

⬜ 프로세스와 스레드 차이

💡 프로세스란 프로그램이 실행 상태에 있는 것을 뜻한다. 프로세서에게 할당하고 실행할 수 있는 엔티티
프로그램은 instruction의 연속으로 구성되어있다. 프로세스는 그 프로그램 instruction을 실행하는 것이다.

🗣누가 프로세스를 만드는가?

  • By human: GUI 혹은 Command line
  • By process: OS Process 혹은 user process 프로세스에 의해 프로세스를 만들 수 있다.

💡 쓰레드란 한 프로세스 안에서 여러 개 Thread를 만들어 사용할 수 있다.
한 프로세스에서 다른 프로세스로 전환하려면 context switch가 발생하는데 이때 걸리는 시간 보다 한 thread에서 같은 프로세스에서 다른 thread로 전환하는데 걸리는 시간이 짧다.
process context switch 시간이 더 많이 걸리는 이유는 메모리에 있는 user context(data, stack)을 변경해야 하므로 시간이 많이 걸린다. 쓰레드 전환은 user context 중 thread context인 stack만 바꾸면 되므로 시간이 적게 걸린다.

🔲 메모리 구조

프로그램이 운영체제로 부터 할당받는 대표적인 메모리 공간은 아래와 같다.
메모리 구조: 코드 영역, 데이터 영역, 힙 영역, 스택 영역

  • 데이터 영역
    전역 변수와 정적(static) 변수가 저장되는 영역
    프로그램의 시작과 함께 할당되며 프로그램 종료시 소멸
  • 코드 영역
    실행할 프로그램 코드가 저장. cup는 코드 영역에 저장된 명령을 하나씩 가져가서 처리한다.
    프로그램이 시작하고 종료될 때까지 메모리에 계속 남아있음
  • 힙 영역
    프로그래머가 직접 공간을 할당, 해제 하는 공간
    malloc() 혹은 new 연산자를 통해 메모리를 할당하고, free() 혹은 delete 연산자를 통해 메모리를 해제한다.
  • 스택 영역
    프로그램이 자동으로 사용하는 임시 메모리 영역
    함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역. 함수 호출이 완료되면 사라진다.

💡Overflow란?
말 그대로 한정된 메모리 공간이 부족하여 메모리 안에 있는 데이터가 넘쳐 흐르는 현상이다.
오버 플로우 종류 중 Heap OverflowStack Overflow가 있다.
힙은 메모리 위쪽 주소부터 할당되고, 스택은 메모리 아래쪽 주소부터 할당되기에 각 영역이 상대 공간을 침범 하는 일이 발생할 수 있다.

⬜ 스택 영역과 힙 영역 차이

스택 영역: 컴파일 타임에 크기가 결정
힙 영역: 런타임에 크기가 결정

⬜ 멀티 프로세싱 하는 이유

멀티 프로세싱은 multi processing 번역 그대로 cpu가 여러 개인 것이다.
1. 프로그램 안전성
2. context switching 비용 감소
3. 자원의 효율성: 자원을 공유하기에 효율성이 좋음
4. 응답 시간 단축

IPC(Inter-Process Communication)

프로세스가 서로 정보를 공유할 수 있도록 지원
- Message Passing

  • kernel을 통해 자원을 주고 받는다.
  • user programming 구현을할 때 간단하며 프로그램이 동작할 때 시간이 걸린다.

- Shared Memory

  • 프로세스 A: shared memory 만들어달라고 os에 먼저 요청
  • kernel: 메모리 공간을 할당 하고 다시 A로 돌아감
  • fork() → 자식 프로세스가 생기면서 shared memory 공유
  • kernel mode로 바꿔서 들어갈 필요없이 user 공간에 있는 data라 user mode에서 실행 가능 시간, 성능 Good!!! But. 프로그래머사 구현시 조금 힘들 수 있있
  • A, B 충돌이 일어날 수 있음 . 순서를 제어해주는 문제를 다루는 것 중요⇒동기화 문제

⬜Shared Memory & Message Passing 방식 차이

shared Memory는 공유하는 메모리 공간을 만들어서 서로 다른 프로세스에서 data를 사용, Message Passing은 kernel을 통해 자원을 넣고 접근하고 넣고 접근하고 이런식으로 자원을 주고 받는다.

⬜ mode change와 context switch란?

mode change
user mode → kernel mode
kernel mode → user mode

context switch ( = process switch)
서로 다른 프로그램으로 넘어가는 것
process1 → process2

profile
Computer Science & Engineering

0개의 댓글