동기화 해결의 세 가지 원칙상호 배체: 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 대기해야 함진행: 어떤 프로세스도 임계 구역에 진입하지 않았다면 진입이 가능해야 함유한 대기: 한 프로세스가 임계 구역 진입을 위해 대기하고 있다면 언젠간 진입이 가능해야 함 뮤텍스 락(Mutex Lock) - 상호 배제를 위한 동기화 도구뮤텍스 락은 한 마디로 자물쇠(lock)다.간단하게 설명해 보자면,자물쇠 역할: 프로세스들이 공유하는 전역변수 lock자물쇠 잠그기: acquire 함수 (임계 구역 진입 전 실행되는 함수)자물쇠 열기: release 함수 acquire() { while (lock == true) /* 만약 임계 구역이 잠겨있다면 */ ; ..
전체 글
하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.com운영 체제는 자원을 관리하고 할당하는 특별한 프로그램이다. 운영 체제모든 프로그램은 메모리(RAM)에 적재되어 있어야 실행된다. 운영체제는 너무 특별하기 때문에 메모리 내 운영체제가 적재되는 영역이 따로 있다. 여기를 커널 영역이라고 부른다.커널 영역이 아닌곳은 사용자 영역(user space)라고 불린다. 운영 체제는 사용자 영역에 있는 많은 프로그램들에게 다양한 일을 해준다.메모리 할당, 반환CPU 할당, 반환디스크 할당, 반환 운영 체제의 핵심부, 커널(kernel)운영체제를 이루고 있는 소스코드는 굉장히 방대한데 그중에서 운영체제가 제공해 주는 핵심 서비스를 제공해 주는 운영체제의 한 부분을 커널이라고 부른다. 스마트폰도 종류가 다양한데 결국 핵심적인 기능은 전화, 문자, 와이파이 등등 인것처럼..
실행 중인 프로그램이 적재되는 메모리 주소는 시시 때때 바뀔 수 있다. 그리고 같은 프로그램을 두 번 실행하면 다른 메모리에 적재될 수 있다. 그런데, cpu와 실행중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 전부 알지 못한다. 그렇다면 cpu는 어떻게 시시 때때로 적재된 프로그램의 주소를 찾아가는 걸까? 나아가서 현재 실행되고 있는 프로그램이 메모리상에 적재되어있는 다른 프로그램을 어떻게 상호작용을 할 수 있을까? 논리 주소와 물리 주소사실, 주소 체계에는 두 종류가 있다: 논리 주소와 물리 주소 물리 주소: 실제 메모리의 하드웨서 상의 주소 (고유한 주소)논리 주소: CPU와 실행 중인 프로그램이 사용하는 주소. 실제 주소가 아니라 논리적으로 그렇다더라 하는 주소다(0번지부터 시작..
스레드에 대한 혼동스레드가 하드웨어적으로도 사용되고 소프트웨어적으로도 사용되는 단어다 보니 약간의 혼동이 있을 수 있다.하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위소프트웨어 스레드: 하나의 프로그램을 독집적으로 실행하는 단위 CPU의 성능을 높일 수 있는 설계CPU의 성능을 높일 수 있는 설계는 다음과 같다. - 높은 클럭 수 - 멀티 코어 - 멀티 프로세서이 외에 명령어 병렬 처리 기법, 비순차적 명령어 처리가 있다. 명령어 벙렬 처리 기법명령어 파이프라이닝 기법이라고도 불린다.하나의 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면 명령어 인출, 해석, 실행, 저장으로 말할 수 있다.👉 위 단계들은 서로 겹치지만 않는다면 한꺼번에 실행할 수 있다. 명령어 파이프라이닝에 실패하..
CPU가 명령어를 순차적으로 처리하는 양상명령어 사이클: cpu가 명령어를 처리하는 정형화된 주기, 흐름인출 사이클 -> 실행 사이클 -> 인출 사이클 -> 실행 사이클 -> 인출 사이클 -> 실행 사이클 -> ... 그러나, 간접 주소 지정 방식처럼 실제 연산에 사용될 데이터를 얻기 위해 한 번 더 메모리에 접근해야 할 경우가 있다. 오퍼랜드 필드에 유효 주소의 주소가 들어가 있다면 메모리에 두 번 접근해야 한다. 이때 간접 사이클이 추가된다.인터럽트cpu의 정상적인 실행 흐름을 방해하는 신호. exception, fault 동기 인터럽트 (예외, Exception)주로 CPU에 의해 발생, 명령어 처리 도중 비정상적인 상황에 마주했을 경우 발생한다. 디버깅할 때 break point도 여기에 해당한다..
CPU의 핵심 구성 요소 세 가지ALU (산술논리연산장치): 연산을 수행하는 장치(계산을 담당하는 회로)제어 장치: 명령어를 해석하고 제어 신호(컴퓨터 부품한테 어떤 동작을 할지 알려주는 일종의 전기 신호)를 내보내는 장치,레지스터(들): 명령어 처리 전후로 값을 임시 저장하는 장치로우 레벨(보안)을 개발하는 직군이면 레지스터와 친해져야 한다.ALU레지스터로부터 피연산자를 받아들이고, 제어 장치로부터 제어 신호(연산할 작업)를 받아들인다. 그리고 연산의 결과를 레지스터, 연산에 대한 부가 정보를 플래그 레지스터에 저장한다. 플래그 레지스터연산의 결과에 대한 부가 정보부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그(인터럽트가 가능한지 여부), 슈퍼바이저 플래그 총 여섯 개가 ..
컴퓨터는 0과 1만을 이해한다모든 양수를 1과 0으로 표현하는 방법: 이진수 binary모든 음수를 1과 0으로 표현하는 방법: 2의 보수모든 소수(분수)를 1과 0으로 표현하는 방법: 부동 소수점모든 문자를 1과 0으로 표현하는 방법: 문자 집합(컴퓨터가 이해할 수 있는 문자들의 모음) & 인코딩 -> 이 방법은 컴퓨터마다 다를 수 있다. 2의 보수법 (2's compliment)현재는 대표적으로 음수를 나타내는 방법이다. (0과 1만으로 음수를 표현하는 방법 중 하나)2의 보수값은 이진수 값에 모든 0과 1을 뒤집은 뒤(여기까지는 1의 보수) 1을 더한 값이다 이걸 왜 사용하는가?컴퓨터 내부에서는 음수 기호를 모르기 때문에 모든 숫자가 0과 1만으로 이루어져 있기 때문이다. 💡 근데 0과 1만으..
1. 즉시 주소 지정가장 간단한, 그러나 자주 사용되지는 않는다.연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시가장 빠른 주소 지정 + 데이터 크기에 제한2. 직접 주소 지정오퍼랜드 필드에 유효 주소(연산에 사용될 데이터가 저장된 메모리 주소)를 직접 명시오퍼랜드 필드로 표현 가능한 메모리 주소 크기에 제한이 생긴다.cpu가 레지스터에 접근하는 속도모다 메모리에 접근하는 속도가 훨씬 느리다. 3. 간접 주소 지정오퍼랜드 필드에 유효 주소의 주소 명시유효 주소 크기에 제한은 없으나, 속도가 비교적 느림(유효 주소에 접근하고 그 유효주소가 가리키고 있는 연산 코드에 사용될 실제 데이터가 있는 곳을 한번 더 바라봐야 한다.)cpu가 메모리에 2번 접근 시도 해야 한다. 4. 레지스터 주소 지정연산에 사용할 ..