목록OS (3)
승쨩개발공부
프로그램의 실행과정 실행파일의 생성 과정 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 1. 전처리기의 치환 작업 전처리기는 '#include' , '#define' 과 같이 '#'으로 시작하는 지시자의 지시에 따라서 소스코드를 적절히 변경하는 작업을 한다. 2. 컴파일러에 의한 번역 전처리기에 의해 변경된 소스코드는 여전히 C언어로 구성되어 있다. 이 소스코드는 컴파일러에 의해서 어셈블리 코드로 번역된다. 3. 어셈블러에 의한 바이너리 코드 생성 바이너리 코드는 1과 0으로만 구성되는 코드이다. 컴파일러에 의해 번역된 어셈블리 코드는 컴퓨터에 의해 실행되기 앞서서 바이너리 코드로 번역 되어야 한다. 컴퓨터는 1과 0만 이해하기 떄문이다. 이처럼 CPU가 이해할 수 있는 바이너리 코드로 바꾸어 주는 프..
컨텍스트 스위칭이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 떄 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 교체하는 작업을 컨텍스트 스위칭(Context Switching)라고 한다. 참고로 컨텍스트 스위칭 떄 해당 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면 오버헤드가 발생해 효율(성능)이 떨어진다. 컨텍스트는 무엇인가? 사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등 현재 상황(상태)을 규정하는 ..
커널 커널은 컴퓨터 시스템을 제어하는 일을 한다. 여기에는 메모리, 사운드카드, 키보드, 모니터와 같은 시스템자원을 포함한다. 이러한 시스템자원을 사용하는 것은 보통 응용 프로그램의 요청을 통해서 이루어지게 되므로 커널은 응용 프로그램을 관리하는 일도 한다. 응용 프로그램의 실행되는 순서라든지 응용 프로그램이 요구하는 시스템자원에 대한 관리가 그것이다. 커널 (Kernel, 핵심) - 소프트웨어적인 관점에서 프로그램의 뇌 - 시스템 데이터나 하드웨어를 직접 액세스 및 제어 프로세스와 쓰레드의 차이점 프로그램의 실행 관점에서 이해하는 것도 중요하지만, 메모리 관점에서 이 둘의 차이점을 이해하는 것 도 중요하다. 프로세스는 메모리를 공유하지 않지만, 프로세스 내에 존재하는 둘 이상의 쓰레드들은 스텍을 제외한..