반응형
이 세상에서 가장 행복한 개발자는?
- 리누스 토발즈(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 내부에서 해당 명령이 실행되고 응용 프로그램에 결과 리턴
반응형
'cs > computer-science-basic' 카테고리의 다른 글
기술면접 - 6. 컨텍스트 스위칭과 IPC (InterProcess Communication) (0) | 2022.03.23 |
---|---|
기술면접 - 5. 스케쥴러와 프로세스 상태 (0) | 2022.03.23 |
기술면접 - 4. 프로세스 (process) (0) | 2022.03.23 |
기술면접 - 3. 응용 프로그램 (0) | 2022.03.23 |
기술면접 - 1. 운영체제 (Operating System) (0) | 2022.03.23 |