멀티프로그래밍

2020. 1. 2. 09:39컴퓨터공학기초 및 이론/운영체제

//사용자 모드에서 프로그램 실행 - 1

#Include <unistd.h>
#Include <sys/types.h>
#Include <sys/stat.h>
#include <fcntl.h>

Int main()
{
	int fd:
    // open() 시스템 콜 호출 - 2 
    // 커널 모드로 전환 - 3
    // open() 함수를 처리하는 sys_open() 커널 함수 호출 - 4
    // 파일 열기의 low level 연산 수행 - 5
    // 다시 사용자 모드로 전환 - 6
    fd = open("data.txt".O_RDONLY);
    //open() 함수 이후의 프로그램을 계속해서 실행
    if(fd == -1)
    {
    	printf("Error: can not open file\n");
        /* 파일을 열지 못했다면 종료*/
        return 1;
	}
    else
    {
    	printf(*File opened and now close_\n*);
        close(fd);
        return ();
    }
}    

 

멀티프로그래밍의 코드/컴퓨터 구조상의 예시.

위 예시를 통해 CPU를 사용하는 여러 응용프로그램이 중간에 다른 작업( 저장매체 접근활동 등)을 할 경우 응답시간의 차이로 인해 응용프로그램의 처리가 느려지는 것을 예상할 수 있음. 따라서 다른 장치를 활용하는 동안에 다른 응용 프로그램을 처리하여 CPU를 효율적으로 사용하는 것.

핵심은 여러 응용 프로그램 실행을 가능토록 하게 하며, 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 것. CPU를 쉬지 않고 응용 프로그램을 실행토록 해서, 짧은 시간 안에 응용 프로그램이 실행완료 될 수 있도록 함. 컴퓨터 응답 시간도 짧게 할 수 있어서, 다중 사용자도 지원. 최대한 CPU를 일정 시간당 많이 활용하는 방식.