일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 중학1-1
- 정보처리기사실기
- 데이터분석
- 정보처리기사필기
- 혼공머신
- 언리얼프로젝트
- 언리얼학습
- html/css
- pandas
- 파이썬라이브러리
- 머신러닝
- 텍스트마이닝
- 데이터입출력구현
- 자바 실습
- JSP/Servlet
- 딥러닝
- C++
- numpy/pandas
- 컴퓨터구조
- 데이터시각화
- 파이썬
- 코딩테스트
- 데이터베이스
- 요구사항확인
- 디버깅
- SQL
- 운영체제
- 중학수학
- 정수와유리수
- 자바
- Today
- Total
클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지
운영체제 시작하기 4 - 운영체제의 큰 그림 3 : 시스템 호출 실습해보기 본문
시스템 호출에 대한 심화 학습을 진행해보려고 한다. 시스템 호출은 운영체제 서비스를 제공받기 위한 방법이므로 시스템 호출 종류만 잘 파악해도 해당 운영체제를 깊이 있게 이해할 수 있다. 이곳에서는 유닉스, 리눅스의 운영체제에서 사용하는 대표적인 시스템 호출의 종류에 대해 알아보겠다.
우선 시스템 호출을 정리한 테이블을 살펴보기로 하자.
이런 식으로 시스템 호출이 정리되어 있다. 이 외에도 정말 많은 시스템 호출이 있지만 일부만 정리한 것이다. 그리고 Difinition에서 링크를 클릭하면 해당 시스템 콜에 대한 라인 넘버가 정의되어 있다.
리눅스 코드를 코드상으로 관찰하고 싶을 때 참고해볼 수 있을 것이다.
리눅스에서 시스템 콜 호출하는 방법
이제 리눅스의 우분투를 활용해 시스템 콜을 관찰하는 방법을 살펴보려고 한다.
STRACE를 사용하고자 하면 해당 도구를 설치해야 한다. 이 도구를 사용해서 시스템 호출을 관찰할 수 있게 된다.
이렇게 ls라고 치면 현재 파일과 폴더의 경로가 보인다. ls 명령어도 바이너리 파일로 실행이 가능하다.
bin/ls를 치면 파일이 실행되는 것이 보인다. 이 명령어를 실행할 때도 시스템 콜이 여러 번 발생할 수 있다. 이때 사용하는 명령어가 strace이다. 그 뒤에 ls 명령어가 위치해 있는 경로를 써주면 ls라는 명령어가 호출하는 시스템 콜의 종류를 보여준다.
예를 들어 hello, honging!이라는 문자열을 출력하는 간단한 프로그래을 만들어보겠다.
이 또한 strace를 통해 시스템 콜을 호출해보았다.
비교적 간단한 프로그램임에도 내부적으로는 시스템 콜을 빈번하게 호출하는 것을 알 수 있다.
macOS에서 시스템 호출하는 방법
리눅스와 미고는 운영체제의 결이 같다. 윈도우 운영체제와는 결이 다르다.
여기서도 ls 명령어의 종류를 볼 수 있다.
리눅스에서는 strace라는 명령어로 시스템 호출을 했지만, 미고에서는 sudo라는 관리자 권한이 필요하다.
개발자가 작성하는 프로그래밍 언어들은 내부적으로 위와 같은 시스템 호출을 통해 실행된다. 가령 C 언어에서 무언가를 화면에 출력하라는 코드인 printf도 내부적으로 시스템 호출을 통해 실행된다.
운영체제는 제공하는 서비스가 매우 다양하기에 시스템 호출의 종류도 다양하다.
학습을 마치고
시스템 호출을 어떻게 작성하고 불러올 수 있는지 배울 수 있었다. 보기만 해도 어렵지만 그래도 학습한 내용을 정리하면서 살펴보았다. 나중에 이런 것들도 직접 코드를 작성하고 다루게 될테니 지금은 맛보기를 한다고 생각할 것이다.
전에는 이런 부분을 공부해볼 생각도 하지 못했겠지만 그래도 관심이 생겼다는 것 자체가 매우 큰 변화와 성장이다.
'알고리즘 및 자료 관리 > 알고리즘 & 코딩테스트' 카테고리의 다른 글
가상 메모리 4 - 페이지 교체와 프레임 할당 (0) | 2024.10.18 |
---|---|
교착 상태 1 - 교착 상태란 (0) | 2024.10.17 |
연산자 응용 2 - 관계 · 논리 · 비트 연산자 코딩테스트 문제 (0) | 2024.08.25 |
입출력 응용 - 문자와 문자열 출력 코딩 테스트 문제 (0) | 2024.08.25 |
연산자 응용 1 - 공식을 사용하여 적용하는 코딩 테스트 문제 (0) | 2024.08.25 |