흔히 32-bit computer, 64-bit computer라는 워딩을 사용하는데 이는 주소의 길이가 몇 비트인지를 표현하는 것이다. 32-bit computer에서는 32-bit memory address를 사용한다. 32bit로는 2^32 == 4* 10^3*3, 4 giga이다. 주소의 최소 단위는 byte이다. 그러므로 4 giga byte까지 표현할 수 있게 되는 것이다.
Chapter 5의 내용이다! 이전 포스팅에서 다뤘듯이 정규언어가 좋긴 한데, 프로그래밍 언어를 다루기에는 조금 부족한 요소들이 있었다. L = {a^n b^n: n>=0} 이면, a=(, b=)일 때 프로그래밍에서 괄호가 중첩인지 확인하기 좋지만 얘 역시 정규언어가 아니였다. (정규언어가 아님은 펌핑lemma를 통해서 보였다.) 따라서 우리는 정규언어보다 더 큰 개념인 '문맥 자유 언어'를 다룬다. 정규언어의 큰 단점은, 좌변은 한개의 변수이고 우변은 특정한 형태여야 했다. (정의임) 문맥 자유언어는 우변에 특정한 형태 대신 아무거나 올 수 있게 허용해줌으로써 더 강력해진다!! 정규언어 ⊂ 문맥 자유 언어이다. * linear grammar? 문제들은 주로, 주어진 언어가 문맥자유언어인지 보이라는 유형..
Scheduling이란? : ready queue에서 실행시킬 프로세스를 하나 선택한다. dispatch는 고른 프로세스를 CPU에 올리는 것인데 이 두개를 합쳐서 큰 의미로 scheduling이라고 한다. Scheduling의 목적 Utilization : CPU를 최대한 일하게 한다. Throughput(처리율) : 시간당 일의 양, 즉 효율을 최대한 높인다. Turnaround Time : 수행 요청부터 수행 끝까지의 시간을 최소화한다. Fairness : 각 task가 CPU의 공평한 몫을 나눠갖게 한다. FIFO(FCFS): first in first out, first come first served 장점: 공평하다 단점: 일이 오래걸리는 사람이 먼저 시작하면 waiting time이 너무 커..
User-level Thread 만들기 리눅스에는 thread의 개념이 없어서, 프로세서처럼 취급하고 만든다. pthread란 POSIX Thread의 약자로 유닉스계열 POSIX시스템에서 병렬적으로 작동하는 소프트웨어를 작성하기 위하여 제공하는 API입니다. pthread_create pthread_create(pthread_t *thread, const pthread_attr_t * attr, void*(*start_routine)(void*), void *arg) pthread_join: 전달된 thread가 끝나기를 기다린다 pthread_join(pthread_thread, void**retval) * gcc 컴파일시 다음과 같이 -pthread옵션을 넣어줘야 한다 gcc -o test test..
https://dany-it.tistory.com/209?category=249937
process의 상태 - new, ready, running, waiting, terminated : 5-state process model new: 프로세스가 만들어 지는 중 ready: 할당되기를 기다리는 상태 running: 인스트럭션이 실행되는 상태, 일 하는중 waiting: 어떤 event가 일어나길 기다리는 상태 terminated: 실행 끝, 프로세스가 다 수행되어서 종료할 때 잠시 생김 어떤 책에서는 waiting을 Blocked나 I/O bound라고 표현하기도 한다!! ready와 waiting의 차이를 잘 알자 사용자의 행동을 기다릴 때 running에서 기다리지 말고 waiting으로 넘겨버리고 사용자가 행동을 해줬다면 waiting에서 ready로 넘기고 CPU의 스케줄러가 스케..