[실시간 특강] 객체지향 프로그래밍, CS 특강

우정·2022년 11월 20일
0

[내일배움캠프] TIL

목록 보기
10/50

1) 객체지향 프로그래밍 특강

  • 객체 : 사물을 설명하는 것은 그 사물이 가지고 있는 속성을 설명하는 것
  • 객체 지향 : 객체 지향의 목표는 실세계를 모방하는 것이 아니라 창조하는 것

2) CS 특강

  • 프로세스
    • 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
    • 독립된 메모리 할당을 받음
    • 프로세스 주소 공간 : 메모리를 관리하기 위한 공간의 구조
      - Code : 코드 자체를 고성하는 메모리 영역
      • Data : 전역변수, 정적변수 등
      • Stack : 지역변수, 함수 매개변수, 리턴 값
      • Heap : 동적 할당 시 사용
    • 프로세스마다 최소 1개의 스레드를 가짐
  • 스레드
    • 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위
    • 프로세스와 해당 프로세스 내의 다른 스레드와 자원과 공간을 공유하면서 사용
  • 멀티 프로세스
    • 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
    • 장점
      - 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽을 뿐 다른 영향이 확산되지 않음
    • 단점
      - 문맥교환에서의 오버헤드 발생
  • 멀티 스레드
    • 하나의 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것
    • 장점
      - 프로세스에 비해 메모리 공간과 시스템 자원 소모가 줄어들게 됨
    • 단점
      - 자원 공유 동기화 문제가 발생함
      • 하나의 스레드에 무제가 생기면 전체 프로세스가 영향을 받음
  • 비동기(asyncronous)
    • 제어권 : 함수의 코드를 실행할 권리. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후 자신을 호출한 함수에게 돌려줌
      • 제어권이 누구에게 있는가?
        - 블로킹 : 함수 A가 함수 B를 호출한 뒤, 함수 B의 리턴값이 올 때까지 기다린 후 진행되는 것. 제어권을 넘겨줌
        • 논블로킹 : 함수 A가 함수 B를 호출한 뒤, 함수 B의 작업 완료 여부와 상관없이 진행되는 것. 제어권을 넘겨주지 않음
    • 동시성 : 함수 A와 B가 동시에 진행되는 것.
      - 함수의 작업 완료 여부를 신경 쓰는가?
      - 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 리턴값을 계속 확인하면서 신경쓰는 것
      - 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 작업 완료 여부는 신경쓰지 않는 것
  • 느낀 점
    • 세상엔 배울 것이 너무 많구나...

0개의 댓글

관련 채용 정보