반응형


이 세상에서 가장 행복한 개발자는?

  • 리누스 토발즈(Linux kernel)와 리차드 스톨만(GNU)



현업, IT 기술과 컴퓨터 공학의 이해
∙ 왜 프로그램이 OS별로 있을까요?

  • 예1: Visual Studio Code
  • 예2: Python compiler


∙ Java 언어로 작성하면 왜 OS별로 만들지 않아도 될까요?

  • 예: JAVA 프로그램 동작을 위해, JRE(JDK) 설치가 필요한 이유



사용자 모드와 커널 모드
∙ 함부로 응용 프로그램이 전체 컴퓨터 시스템을 해치지 못함

  • 주민등록등본은 꼭 동사무소 또는 민원24시(정부 사이트)에서 특별한 신청서를 이용해서 발급
  • 동사무소 직원들은 특별한 권한을 가지고, 주민등록등본 출력 명령 실행



쉬어가기: 시스템 다운

  • window - 블루스크린



CPU Protection Ring

  • 사용자 모드 (user mode): 응용 프로그램이 사용
  • 커널 모드 (kernel mode): OS가 사용



시스템콜은 커널 모드로 실행

  • 커널 모드에서만 실행 가능한 기능들이 있음
  • 커널 모드로 실행하려면, 반드시 시스템 콜을 사용해야 함
  • 시스템 콜은 운영체제 제공



Code example 1

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

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



현업, IT 기술과 컴퓨터공학의 이해
∙ App Store에서 다운받은 앱이 휴대폰 데이터를 삭제하는 코드가 들어 있다면?

  • 앱이 동작하기 위해 필요한 권한을 사용자에게 입력받는 이유



정리

  • 운영체제는 시스템 콜 제공
  • 프로그래밍 언어별 운영체제 지원을 위해, 운영체제 별 API 제공
  • 응용 프로그램 개발 시 운영체제 기능이 필요한 경우, 해당 API를 사용해서 프로그램 작성
  • 응용 프로그램 실행 시, 해당 API를 호출하면 시스템 콜 호출
  • 커널 모드로 변경 후 OS 내부에서 해당 명령이 실행되고 응용 프로그램에 결과 리턴



반응형

+ Recent posts