Programming Language) Week 10 -Coroutine, Memory Management,

Jay Kim·2022년 1월 17일
0

Programming Language

목록 보기
10/11

Coroutine


  • 동시성 프로그래밍 지원
  • context switching overhead가 적은 non-blocking 일종의 경량 스레드
  • 프로그램 실행 중일 때 특정 시점에 코루틴으로 이동 -> 그 전 실행하던 루틴을 정지 가능
  • 협력형 멀티 태스킹 : 진입/탈출 여러개 존재
  • 비동기 처리 도와줌 : blocking 없음

Memory Management


  1. Elements requiring memory
    • 코드 부분(code segments)
    • 데이터 부분(user data) : 사용자가 정의한 변수,상수들 공간, Activation records
    • subprogram 실행 : subprogram 복귀 주소, 참조 환경 주소
  2. programmer & system-controlled MM
    • programmer-controlled
      • 문제점: garbage, dangling reference , system의 메모리 관리 방해 가능성, 프로그래머가 모든 메모리를 관리할 수 없음
      • 장점 : system은 메모리 할당/해제의 정확한 시점 모름, 개발자는 메모리 할당/해제의 정확한 시점을 알고 있음
    • system-controlled (운영체제가 관리)
      • 신뢰성 , 낮은 효율성
  3. steps of memory management
    • 초기할당
    • 복구 : 재사용을 위함(free state) , stack의 경우 stack pointer만 변경
    • 압축/재사용
  4. Kinds of memory management
    • 언제 기억 장소 관리를 하는지
      • 정적 관리 : 번역 시
      • 동적 관리 : 실행할 때 메모리 할당
    • 어디서 기억 장소 관리를 하는지
      • stack - based memory management : 시스템이 할당 해제
      • heap-based storage management : 프로그래머가 할당 해제
  5. Static storage management
    • 번역 시간 할당 = 프로그램 시작할 때 할당
    • 실행 중 변화 , 복구/재사용 없음
    • 실행 시간에는 프로그램 명령만 실행, 메모리 관리는 안 함
    • 장점 : 구현이 쉽다.
    • 단점: 융통성 없음, 메모리 낭비 (실행 되지 않은 코드도 메모리 공간을 미리 할당함)
  6. Dynamic storage management
    • 실행 시간 할당
    • interpreter 언어가 대표적
  7. stack - based storage management
    • 동적 할당하는 프로그래밍 언어가 대표적 : compiler-based, interpreter-based , algol-like languages : 블록 구조
    • 프로그램 단위 : block (정적 포함 관계) , subprogram(호출문에 활성화 됨)
    • 단위 활성화 (unit activation)
      • code + activation record
      • activation record
        • dynamic link(동적 링크) = 동적 체인 -> 복귀해서 사용할 참조환경 저장(cep)
        • static link(정적 링크)
        • return address(복귀 장소) -> CIP 저장
        • referential environment (참조 환경)
  • 블록의 메모리 바인딩 (A.R memory binding)
    • 변수의 크기와 변위의 결정 시간에 따라 바인딩 종류 나뉨
      - 정적 바인딩 : 번역 시간에 변수의 크기, 오프셋 정적으로 결정
      - 활성화 시점 바인딩 : 활성화 시점에 변수의 크기, 오프셋 동적으로 결정됨 -> semi dynamic variable
      - 동적 바인딩 : 활성 레코드 크기가 실행 시간에 결정됨 , 실행 중 변화 가능 -> 동적 변수
      • 동적 변수의 특징 : 프로그램 종류 후에도 메모리 유지 가능, heap 에 저장
  • 비지역 변수를 위한 참조 환경 : 정적 체인을 통해 정적 내포 관계 표현
    • 체인 변위 (chain offset = distance) : 블록의 정적 깊이 값을 가짐
    • 정적 링크 : 단위 프로그램 내포 구조 표현
    • 동적 링크 : 단위프로그램 호출 순서 표현
  1. Heap-based storage management
    • heap ) 메모리 블록, 자유롭게 할당 및 해제 가능
    • 문제점 : 기억 장소 수집 기술 필요
    • heap 의 필요성 ) 프로그램 실행 중 아무 때나 메모리 할당/해제 가능 , 어떤 위치에서나 데이터 구조 생성, 삭제, 확장 가능
    • heap 메모리 관리 )
      • 고정 크기 기억 장소 할당 : 사용 가능 블록 리스트 유지, 참조계수 , 쓰레기 수집
      • 가변 크기 기억 장소 할당 : 필요한 만큼만 할당하기

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN