CS 지식(4)
-
프로세스, 스레드, 동기화
프로세스 실행 중인 프로그램을 프로세스라고 한다. 메모리 관점에서의 프로세스: 코드-데이터-힙-스택 영역과 레지스터 상태. 프로세스 상태 변화 new> ready: 프로세스 생성 ready> running: 스케줄러가 해당 프로세스를 Run 시킴 running > ready : 스케줄링 우선순위에서 밀렸거나 작업 완료 run > waiting: 프로세스가 I/O 진행 등의 이유로 블락됨. waiting> ready : I/O 종료 등의 이유로 블락이 해제됨. waiting> terminated : 프로세스 종료 컨텍스트 스위칭 실행 중인 프로세스 변경 시, 작동하는 절차를 컨텍스트 스위칭이라고 한다. 구체적으로, 현재 프로세스의 context(register set 등)를 PCB에 저장 실행될 프로세스의..
2023.05.10 -
캐시 메모리
캐시 메모리 캐시 메모리는 RAM의 느린 속도를 극복하기 위해서 등장한 메모리로, CPU 내부에 존재한다. 일반적으로 데이터를 로드할 때 캐시 메모리에 저장하는데, 이 때 그 데이터 뿐만 아니라 인접한 데이터도 같이 로드하게 된다. (64 바이트의 크기를 가지는 캐시 라인 단위로) 이는 어떤 데이터에 접근할 때 인접한 데이터 또한 접근할 확률이 높기 때문이다. 데이터 로드 시점에, 캐시 메모리에 이미 해당 데이터가 저장돼있어서 캐시에서 데이터를 로드한다면 이를 캐시 히트라고 하고, 아까와 같이 캐시 메모리에 저장되어있지 않아 메모리에서 로드하는 상황을 캐시 미스라고 한다. 캐시 히트 확률이 높다면, 로드하는 시간이 그만큼 줄어들기에 성능이 좋아진다. 그럼 캐시 히트를 자주 발생시키려면 어떻게 해야할까? ..
2021.11.08 -
메모리
가상 메모리 32비트 기준, 실제 메모리(RAM)와 가상 메모리의 공간은 4GB(2^32)이고, 이 중 절반인 2GB는 커널이 차지한다. 가상 메모리 속 커널 영역은 모든 프로세스가 공동으로 소유하고, 프로그래머가 접근할 수 없다. 프로그래머가 직접 제어하는 메모리는 RAM이 아니라, 프로세스마다 가지고 있는 가상 메모리이다. 가상 주소와 가상 메모리를 사용함으로써 프로세스마다 4GB의 메모리를 할당해줄 수 있다. (만약 4GB를 하드 디스크에 저장하고 현재 동작하는 프로세스의 메모리를 RAM에 올린다면, 4GB 선 할당해야하는 부담이 있을 것이고, 속도도 매우 느릴 것이다.) 아래의 그림은 앞으로 설명할 page, page table, TLB, MMU의 동작을 설명한다. Paging 가상 메모리와 물리..
2021.11.08 -
어셈블리 관련 정리(x86)
어셈블리어C를 비롯한 고급언어들과 달리 컴퓨터와 가까운 저급 언어이기 때문에,아키텍처에 따라 문법(규격)이 다르다. 즉 호환성이 없다.기계어와 1대1로 대응된다. 프로그램 생성&동작까지..소스파일 -> 컴파일러 -> (어셈블리어 -> 어셈블러) -> 기계어 (오브젝트 코드)-> (+라이브러리) Linkage Editor -> 실행 파일 -> 로더 -> 메모리 CPU 레지스터란CPU 내부에 위치한, CPU가 메모리에서 가져온 필요한 값들을 저장하는 곳.속도가 가장 빠르다.모든 연산은 cpu 레지스터에서 이루어져야한다. CPU 레지스터의 종류ebp, esp : 현재 스택프레임의 stack pointer(=top), base pointereax, ebx, edx : 연산시 주로 사용하는 임시 전역변수의 역..
2021.10.15