[OS] 프로그래밍이란?
1. 프로그래밍 언어란?
인간과 컴퓨터간의 의사소통, 컴퓨터는 기계어만 이해 가능
- 기계어란? 0, 1 로 된 이진수 형태로 CPU가 이해할 수 있는 코드
- CPU가 수행할 수 있는 명령
- instruction set(명령어 집합) = 더하기, 빼기, 데이터 저장, 불러오기, if, return 등 OP code
- 저급언어
- 기계어, 어셈블리어 (ex. ADD A B)
- 고급언어
- 하드웨어의 기술적 요소를 몰라도 작성 및 수정 가능 (ex., y = x + z)
- C, JAVA, PYTHON 등
- 컴파일러
- 고급언어로 작성된 코드를 한번에 기계어로 변환하는 프로그램
- C, JAVA
- 인터프리터
- 고급언어로 작성된 코드를 한줄씩 기계어로 변환하는 프로그램
- Python, PHP, Ruby 등
2. 운영체제
- 종류: OS, Windows, Mac, UNIX
- UNIX:
- UNIX OS, LINUX OS
- 역할:
- 시스템 자원 관리
- 사용자와 컴퓨터간의 communication 지원
- 응용프로그램 제어
- 시분할 시스템: 다중 사용자를 지원하고 컴퓨터 응답 시간을 최소화
- 멀티태스킹: 단일 CPU에서 여러 응용프로그램을 병렬 실행을 가능하게 함, 사용자가 느끼기에 여러 프로그램이 동시에 실행되는 것 처럼 보이는 것
- UNIX: 현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제
- 멀티태스킹, 시분할 시스템, 멀티 프로그래밍
3. Shell
사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스 제공하는 프로그램 (CLI, GUI)
- Interface 제공
- API: 함수로 제공 ex.,) open()
- Library : c Lib
- System Call
- 시스템 콜 또는 시스템 호출 인터페이스
- 운영체제가 운영체제의 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수 제공
- API 내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분
4. 내가 운영체제를 만든다면?
- 운영체제를 개발 (Kernel)
- System call 개발
- C API 개발
- Shell 프로그램 개발
- 응용 프로그램 개발
5. System call
POSIX API: Portable Operating System Interface
- 서로 다른 UNIX OS의 공통 API 를 정리하여 이식성 높은 유닉스 응용프로그램을 개발하기 위한 목적
- 윈도우 API
참고
This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄.
댓글남기기