운영체제 썸네일형 리스트형 Virtualization - Virtual Memory 연속 메모리 할당 한 프로세스가 연속적인 메모리 공간에 전부 적재되는 기법. *가장 단순하지만 이 기법으로는 메모리보다 큰 프로세스는 실행이 불가능하다. Address Translation 가상 메모리는 32비트 운영체제에서는 2^32 byte만큼의 크기이다. 하지만 이건 프로세스가 생각하는 메모리이며 실제 물리 메모리는 다르다. 그래서 프로세스가 요청한 가상 메모리 주소를 운영체제는 물리 주소로 변환해서 사용하는 과정이 필요하다. 프로세스의 Address Space의 주소를 진짜 물리적인 메모리의 어느 주소인지를 결정하는 과정을 Address Translation이라고 한다. *Virtual Address를 Physical Address로 변환하는 과정이다. CPU 코어당 하나씩 MMU (Memory .. 더보기 Virtualization - CPU Scheduling Virtualization - CPU Scheduling CPU의 코어의 갯수가 한정적이지만 프로세스는 많을 경우 사용자가 답답하지않도록 운영체제는 프로세스들을 잘 줄지어서 CPU 코어를 배정해줘야한다. 이를 CPU Scheduling이라고 한다. 사용자의 화면에 떠서 사용자가 클릭하고 타이핑하는 류의 프로세스는 반응성이 중요하다. 그래서 짧게라도 자주 CPU 코어에 배정해줘야한다. 반면 백그라운드에서 돌지만 계산이 오랜 시간 필요한 프로세스는 얼마동안 배정받지않더라도 사용자에게 답답함을 유발하지 않는다. 가끔 길게 CPU 코어를 배정해주면 될 것이다. Time Sharing & Time Slicing (같은 말이다.) Muti programming 시대가 열리면서 프로세스간에 동시에 도는 것을 지원한다.. 더보기 Thread Thread 프로세스도 CPU의 코어를 점유하여 명령어들을 실행하고 쓰레드도 CPU의 코어를 점유하여 명령어를 실행한다. 사실 프로세스를 실행하는 것은 메인 쓰레드가 하나 실행되는 것이다. (단일 쓰레드 프로세스) 하지만 프로세스와 쓰레드 둘 다 작동은 비슷해보이지만 메모리 구조가 조금 다르다. heap은 프로세스 내의 모든 스레드가 공유하고 스택, 레지스터 상태는 각자 갖는다. 프로세스끼리 Context Switch가 일어나는 것과 똑같이 쓰레드끼리도 Context Switch가 일어나면서 레지스터의 내용도 바꿔줘야한다. *그럼 어떤 프로그램을 여러개 실행하는 것과 한 프로그램에서 쓰레드를 여러개사용하는 것은 메모리상 무엇이 다를까? 위 그림의 code, data, files 등이 쓰레드간에 공유된다... 더보기 Process [ Process ] Program을 실행하면 Process가 된다. Program은 디스크에 존재하는 명령어들의 집합이다. 이를 실행하면 실행중인 Program, Process가 된다. 명령어를 실행하는 주체는 CPU 이다. CPU가 실행중인 Program의 명령어를 한줄한줄 실행한다. 여러 Process가 한꺼번에 실행될 수 있다. 그럼 하나의 CPU 코어가 여러 Process를 어떻게 동시에 실행할 수 있는걸까? 기본적인 기법은 Time Slicing이다. A Process를 실행하다가 B Process를 돌리는 등의 Time을 잘게 쪼개서 번갈아가면서 실행하는 것이다. 이는 매우 빠르고 시간의 쪼갬은 매우 잘게 쪼개져있어서 동시에 실행되는 것처럼 느껴진다. 한 Process에서 다른 Process.. 더보기 간단 컴퓨터 구조 [ 컴퓨터 구조는 왜 공부 하는 것 일까? ]프로그래머는 컴퓨터가 돌아가는 프로그램을 만드는 일을 한다.그래서 프로그램이 돌아갈 컴퓨터에 대해서도 알아야한다. [ 컴퓨터의 4가지 구성요소 ]CPU - 메모리에 저장된 명령어를 읽어 들이고 읽어 들인 명령어를 해석하고 실행한다. - CPU 가까이에는 레지스터라는 작은 기억장치들과 ALU라는 산술논리연산장치가 있다. - 프로그램 카운터 (PC : 메모리에서 가져올 명령어의 주소를 담는 레지스터) - 명령어 레지스터 (해석할 명령어를 담는 레지스터) - 메모리 주소 레지스터 (메모리 주소를 저장하는 레지스터) - 클럭 신호 (클럭 신호마다 CPU는 명령어 사이클 (명령어를 메모리에서 가져오고 실행) 을 반복 그래서 CPU의 클럭 속도가 빠를수록 성능이 좋음.. 더보기 이전 1 다음