학교 수업/임베디드 시스템

[리눅스 프로그래밍] 1. 유닉스/리눅스 란?

흑요석s 2022. 10. 10. 20:57

1) 유닉스란 : 고급언어로 개발된 최초의 운영체제

 

2) 설계 철학

  • 단순성 : 최소한의 기능만 제공 => 자원(resource)에 대한 일관된 관점 제공.
  • 이식성 :  C언어로 작성 => 다양한 플랫폼에 쉽게 이식 가능 (IOS, android 등이 유닉스 계열)
  • 개방성 : 소스코드 공개 

3) 특징

  • 다중 사용자, 다중 프로세서 운영체제 : 여러 사용자, 여러 프로그램 + 슈퍼유저(사용자 관리)
  • 쉘 프로그래밍 : 쉘(명령어 해석기)을 통해 시스템과의 대화처럼 시스템을 사용가능=> 명령어, 유틸리티 사용 (쉘 스크립트)
  • 계층적 파일 시스템 : 파일시스템이 계층구조 형태로 구성
  • 훌륭한 네트워킹 : 다양한 네트워크 응용프로그램 제공  => 유닉스로부터 네트워킹 시작

4) 유닉스 운영체제 구조

  • 운영 체제 : 하드웨어 자원(resource) 운영 및 관리, 프로그램 실행환경 제공
  • 커널 (kernel) : 하드웨어 운영 및 관리(유닉스)
<커널이 관리하는 것들>
- 프로세스 : 다중 프로그램 실행
- 파일 : 저장장치에 파일 시스템 구성
- 메모리 
- 통신 
- 주변장치 : 모니터, 키보드 등 관리
  • 시스템 호출 (system call) : 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 역활
  • 쉘 (shell) : 사용자와 운영체제 사이의 인터페이스, 명령어 해석기(명령어를 입력받아 해석 및 수행)
운영체제 : 사용자 -> 쉘 -> 시스템 호출 ->  커널

 

5) 슈퍼유저(superuser)

  •  root : 슈퍼유저가 사용하는 계정
<슈퍼유저 명령어>
$su [user]  : 슈퍼유저 로그인
* sudo를 이용하면 슈퍼유저 로그인 없이 root 권한 사용가능
$sudo apt install : 관리자 권한 설치 (gcc설치 가능)
$sudo passwd root : 관리자 비밀번호 설정
#useradd [user] : 사용자 추가
#userdel [user] : 사용자 제거
#passwd [user] : 사용자 비밀번호 설정
#groupad [-g gid] [groupid] : 그룹 추가