*이 카테고리의 게시글은 경북대학교 시스템프로그래밍 수업을 수강하면서 개인적인 공부 차원에서 작성하고 있습니다.
교재 : B. Molay, Understanding UNIX/LINUX Programming: A Guide to Theory and Practice, Pearson, 2002
본격적인 시스템프로그래밍 내용으로 들어가기 전, 필요한 배경지식과 Tool에 대해 알아보았습니다!
1️⃣ Background (수업내용)
1) kernel의 구성요소 - System Resources
⦁ processors(CPU)
: 하드웨어 실행 명령어
- 프로그램 : 소스코드로부터 컴파일된 명령어들의 집합
- 커널) 프로그램에 프로세서 할당 / 프로세서에서 프로그램을 시작, 중지, 재개, 종료
⦁ input / ouput
- 커널) 프로그램에 흘러들어가고 나오는 모든 데이터는 커널을 통과
ex. 터미널이나 디스크에서 사용자에게 오고가는 데이터는 커널 통과 없이는 이동이 불가
⦁ Process management
- 프로세스 : 실행 중인 프로그램 / 구성 : 메모리, 열린 파일, 기타 시스템 리소스(소켓장치, 장치 드라이버 등)
- 커널) 새로운 프로세스 생성, 협력적 작동 위한 스케줄링
⦁ Memory
: 컴퓨터의 메모리 = 리소스
- 커널) 어떤 프로세스가 메모리의 어떤 섹션 사용중인지 추적 / 메모리 세션에 프로세스 할당
한 프로세스의 메모리가 다른 프로세스에 의해 손상되지 않게 보호
⦁ Devices
: 컴퓨터에 부착 가능한 모든 장치들 / ex. 마우스, 스캐너, 프린터, 아이폰 등
- 커널) 장치에 대한 접근 제공, 장치와의 통신에서 발생할 수 있는 복잡성 처리
⦁ Timers
: 시간의존적인 프로그램의 시간을 카운팅 / ex. 경과 시간, sleep 시간
- 커널) 타이머를 프로세스에서 사용할 수 있게 함
⦁ IPC
: Inter Process Communication. 프로세스간 통신
: 동시프로그램을 실행하는 컴퓨터시스템에서 프로세스들이 서로 소통하는 것
- 커널) 다양한 IPC형태 제공
⦁ Networking
: 네트워크는 데이터 교환을 위해 서로 다른 컴퓨터, 서로 다른 운영체제에서 프로세스를 허용
- 커널) 네트워크 엑세스 제공
2) 운영체제 Unix & Linux
⦁ unix
- 60년대 후반 AT&T 벨 연구소에서 개발
- C로 작성 / 인터넷 서버, 워크스테이션에 사용
ex. OS X, Solaris, BSD
⦁ Linux
- GNU도구와 결합하여 Linus Torvalds가 개발
- 유닉스 계열의 운영체제(유닉스와 매우 유사한 사용자 수준 인터페이스) / 코드기반은 유닉스와 다름
ex. Ubuntu, Fedora, SUSE
Unix | Linux | |
비용 | 공급업체에 따라 다른 비용 구조 | 라이센스O 버전 무료배포 |
개발&배포 | AT&T | Open Sourc Community |
제조 | Solaris(Oracle), AIX(IBM), OS X(Apple) | Linus Torvalds |
사용 | 인터넷 서버, 워크스테이션 | 전화기, 태블릿PC, 슈퍼컴퓨터 |
보안 | 85~120개의 바이러스 | 60~100개의 바이러스 |
📌 Linux의 요소
⦁ 커널(kernal) : OS의 기본 구성 요소 (기능은 위의 System resource 참고)
⦁ 시스템 사용자 공간 : 구성 및 소프트웨어 설치와 같은 시스템 수준 task를 위한 관리 레이어
⦁ 응용 프로그램(application) : task 수행할 수 있게 지원하는 소프트웨어 유형
⦁ shell : 사용자가 입력한 문장을 읽어 요청 실행하는 명령어 해석/번역기
⦁ 파일시스템 : 파일 저장의 기본적 구조, 시스템 관리 위한 기본환경 제공
2️⃣ Tools
📌가상머신
: 컴퓨터를 애뮬레이팅 한 것
⦁ 호스트 : 가상머신을 작동시키는 컴퓨터(실제 컴퓨터)
⦁ 게스트 : 가상머신 안에서 작동하는 컴퓨터
-> 가상머신 이용시 호스트는 게스트에게 독립된 실행환경 제공
⦁ 장점
- 여러 운영제제 환경 구축 : 하나의 운영체제 위에 다양한 운영체제 환경 구축 가능
- 독립된 환경 구축 : 네트워크 연결 없다면 악성코드 분석 등의 작업 수행시 호스트머신에 피해X
- 스냅샷 기능 : 머신의 상태 저장 및 저장된 상태로 복구 가능
📌LINUX
1. ubuntu : linux의 배포판
2. wsl : window subsystem for linux -> 윈도우에서 리눅스를 사용하게 해주는 기능
3. window 가상머신 : window terminal을 이용해 ssh를 통하여 linux에 접속
'Computer Science > System programing' 카테고리의 다른 글
[System programing] ls, stat (1) | 2023.10.15 |
---|---|
[System programing] who, cp, buffering (1) | 2023.10.13 |