본문 바로가기

Computer Science/System programing

[System programing] Background & Tool

*이 카테고리의 게시글은 경북대학교 시스템프로그래밍 수업을 수강하면서 개인적인 공부 차원에서 작성하고 있습니다.

  교재 : 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