프로세스 구조 컴파일 : 0과 1로 된 기계언어로 변환 되는 것.(바이너리라고도 부름) CODE : 프로그램 코드가 컴파일된 언어로 저장되는 영역 DATA : 프로그램 내에 선언된 변수의 값을 저장 STACK : 함수가 실행 이후의 동작에 대한 주소인 return address값을 동적으로 저장-> 첫번째인자 저장 -> 두번째 인자 저장 -> 두번째 데이터 삭제 -> 첫번째 데이터 삭제 -> return address 삭제 -> 해당 함수 다음의 코드 실행 HEAP : 대표 적으로 molloc()이라는 함수가 있다. 특정 메모리 공간을 동적으로 생성하게 되는데, 이처럼 HEAP은 별도로 사용할 공간을 만드는 곳이다. 코드 예시 보기 void meaningless는 단수 함수 선언. stack 자료구조의 ..
인터럽트 내부동작 시스템 콜 인터럽트 시스템 콜 실행을 위해서는 강제로 코드에 인터럽트 명령을 넣어, CPU에게 실행시켜야한다. 시스템 콜 실제 코드 eax 레지스터에 시스템 콜 번호를 넣고, ebx 레지스터에는 시스템 콜에 해당하는 인자값(함수의 인자 값 포함)을 넣고, 소프트웨어 인터럽트 명령을 호출하면서 0x80값을 넘겨줌 mov eax,1 // 1 = 시스템콜번호 mov ebx,0 // 0 = 인자 int 0x80 // 무조건 마지막에는 CPU에서 제공하는 OP code(인스트럭션 코드)가 들어가며, intel에서 제공하는 것 중에는 int가 있다. // 0x80 = 인터럽트 번호, 시스템 콜은 0x80으로 정해져 있다. 1 = 시스템콜번호 0 = 인자 int 0x80 : 무조건 마지막에는 CPU..
인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우 CPU에 알려서 처리하는 기술어느 한순간 CPU가 실행하는 프로그램은 하나! => 즉, ready -> running -> waite(block) 상태에서 다시 ready로 가려면 어떤한 신호가 필요한데, 이를 interrupt라고 한다. 이벤트 발생 -> interrupt -> kernel모드 변경 인터럽트 필요 이유 => 이벤트 정의부터 처리까지 담당하는 운영체제 선점형 스케쥴러 구현 - 프로세스 running 중에 스케쥴러가 이를 중단 시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스 실행을 중단시킴 - 그러려면, 스케쥴러 코드가 실행이 되어서, 현 프로세스 실행을 중지..
명이나물 라이브러리