유닉스(Unix)는 1970년대 초 미국 AT&T벨 연구소에서 켄·톰프슨(Ken Thompson), 데니스, 리치(Dennis Ritchie)등으로 다중 사용자 운영 체제로서 개발된 이후 지속적으로 발전하고 처음 유닉스 운영 체제는 중형 컴퓨터에 사용되게 고 안도였으나 점차 발전할수록 슈퍼 컴퓨터, 스마트 폰, PC까지 사용, 특히 1990년대 초에 리누스·톨발즈(Linus Torbalds)에 의해서 PC를 위한 운영 체제인 리눅스(Linux)가 개발되었다.또 최근에는 스마트 폰, 태블릿 PC등 때문에 MacOS X를 기반으로 iOS가 개발, Linux기반으로 Android운영 체제가 개발, 유닉스 운영 체제는 소프트웨어 경쟁력의 핵심!
유닉스의 설계철학 1) 단순성(Simplicity) 초기 운영체제인 MIT MULTICS에 반대하여 최소한의 기능만 제공 자원에 대한 일관된 관점 제공 = File(MULTICS:현대 운영체제에 큰 영향을 준 초기 시분할 운영체제) 2) 이식성(Portability) 이식성을 위해 C언어로 작성 =다양한 플랫폼에 쉽게 이식 가능
유닉스 계열 운영 체제 Android OS iOS Mac OS X 리눅스 BSD 유닉스 시스템 VSun 솔라리스 IBM AIXHP HP-UXCray 유니코스
3) 오픈성(Openness) 소스코드 공개와 같은 오픈성
유닉스의 특징 1) 멀티유저 멀티프로세스 운영체제, 복수의 사용자가 동시에 사용 가능, 복수의 프로그램이 동시에 실행 가능, 복수의 사용자를 관리하기 위한 슈퍼유저가 있음 2) 쉘프로그래밍 유닉스는 명령어 해석기인 셸을 통해 사용자가 시스템과 대화하듯이 시스템 사용 유닉스 명령어나 유틸리티 등을 사용하여 프로그램을 작성(쉘스크립트), 계층적 파일 시스템, 유닉스 파일 시스템은 디렉토리가 트리와 같은 계층구조 형태로 구성, 가장 높은 디렉토리인 루트(root), 다음과 같은 구조로 구성되어 있다. talnet, www 등 대부분의 네트워크 애플리케이션은 유닉스를 기반으로 개발되어 점차 다른 시스템으로 이전
유닉스 시스템(운영체제) 구조
유닉스 운영체제 구조
1) 운영체제 운영체제는 컴퓨터의 하드웨어 리소스를 운용 관리하고 사용자가 프로그램을 실행할 수 있는 환경을 제공하는 소프트웨어인 2) 커널 하드웨어를 운용 관리하며 프로세스, 파일, 메모리, 통신, 주변 디바이스 등을 관리하는 서비스를 제공(스케쥴링) 직접 접근할 수 없다. = 시스템 호출 접근
커널의 역할
커널의 역할 프로세스 관리의 복수의 프로그램이 실행되도록 프로세스를 CPU 스케줄링하여 동시에 실행되도록 한다.파일 관리 디스크와 같은 저장 장치 상에 파일 시스템을 구성하여 파일을 관리한다.메모리 관리 메인 메모리를 효과적으로 사용할 수 있도록 관리한다.통신관리 네트워크를 통해 정보를 주고받을 수 있도록 관리한다.주변장치 관리 모니터, 키보드, 마우스와 같은 장치를 사용할 수 있도록 관리한다.
3) 시스템 콜(system call) 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 롤 라이브러리(시스템이 제공해준 함수) 제공 응용 프로그램은 시스템 콜과 라이브러리 모두 필요할 때 자유롭게 호출 사용 가능셸 사용자와 운영체제 간 인터페이스를 제공하는 특수 소프트웨어로 사용자로부터 명령어를 입력받아 그 명령어를 해석하는 명령어 해석기이다.유닉스 역사 AT&A 벨 연구소에서 개발 – 켐프슨이 어셈블리어로 개발 데니스 리치가 C언어로 재작성 – C언어는 유닉스를 작성하기 위한 언어로 밀접하게 관련 이론적으로 C 컴파일러만 있으면 이식 가능 이후 유닉스는 그 소스코드가 대학 및 연구소를 중심으로 개방, 지속적으로 개선과 발전유닉스의 큰 흐름 1)시스템 V벨 연구소에서 개발한 유닉스 운영 체계는 지속적으로 발전하고 시스템 V개발 유닉스 버전 중 첫번째 대표적인 성공 사례-여러 유틸리티가 공개되면서 일반 사용자에게도 확산 다양한 상업 버전에 발전(IBM의 AIX, Sun의 Solaris, HP의 UP-UX)2)BSD유닉스 공개 소스 코드를 기반으로 버클리 대학에서 개선되고 BSD유닉스 형태로 발전 메모리 관리 기능의 향상 네트워크 기능의 추가(TCP/IP네트워크, 소켓)선 OS와 맥 OS와 같은 성공적인 상용 운영 체제가 됐다. 그 뒤 커널 소스 코드가 공개되면서 인터넷 상에서 자원자에 의해서 계속적으로 개선 공용 도메인상의 무료 운영 체계 형태로 발전 현재 다양한 플랫폼에 포팅 가능 GNU소프트웨어와 함께 배포리눅스의 장점이 풍부하고 다양한 하드웨어를 효과적으로 지원하는 추세 PC <워크스테이션 <서버 등 놀라운 성능 및 안정성 Pentium(퍼스널 컴퓨터)임에도 불구하고 이 당시 충분히 빠르고 안전하게 수행 인터넷에 맞는 강력한 네트워크 구축 다양한 애플리케이션 개발 무료 배포판 레드햇(RedHat) – 상업용 우분투(Ubuntu) 페도라(Fedora) CentOS4)SolarisSun(SUN)가 개발한 시스템 V기반 운영 시스템 SunWorkStation에서 전문가가 주로 사용한 뒤 인텔 아키텍처의 대량 보급으로 인텔용 태양 디스도 발매되어 널리 보급 5)MacOS1984년 애플 매킨토시 컴퓨터용 운영 체계로 개발-컴퓨터용 컴퓨터에 GUI을 처음 도입 5.1)MacOSX2002년 NEXTSTEP오퍼레이팅 시스템과 BSD유닉스를 기반으로 개발 문서 편집, 그래픽, 멀티 미디어 등의 판매에 많이 사용되는 6)모바일 기기용 운영 체제(모바일 기기용 운영 체계, 태블릿(6)모바일 기기용 운영 체계 운영 체제(애플회사의 iPhone, iPad, iPod)사용자 계정 관리 유닉스 계열 운영체제는 하나의 시스템을 여러 사용자가 동시에 사용할 수 있도록 허용한다. 따라서 시스템을 관리할 수 있는 사용자가 필요하며, 이를 슈퍼유저(superuser)라고 한다.슈퍼유저(superuser) 시스템을 관리할 수 있는 사용자 사용 계정이 루트 계정에 로그인하여 사용자 계정을 추가, 삭제하고 사용자 비밀번호를 변경할 수 있다.소프트웨어 설치, 로그 파일 검사 등 시스템 관리의 모든 측면을 실행 가능한 root 계정은 사용이나 보안상의 어떠한 제약도 받지 않기 때문에 매우 신중하게 사용한다.슈퍼유저 로그인 직접 root 계정으로 로그인하는 일반 사용자 계정으로 로그인한 경우 su 명령을 사용하여 root 계정에 재로그인 한다: $su [사용자 이름]사용자 계정 추가 1) 사용자 추가/삭제 – 터미널에서# useradd [옵션] 사용자 이름 사용자 추가 #passwd 사용자 이름 사용자 비번 지정 #userdel 사용자 이름 사용자 삭제# useradd [옵션] 사용자 이름 사용자 추가 #passwd 사용자 이름 사용자 비번 지정 #userdel 사용자 이름 사용자 삭제useradd 명령 옵션 설명-c 코멘트 임의의 코멘트를 표시할 수 있으며, 주로 사용자의 이름을 표기하는-d 디렉토리 홈 디렉토리 위치(기본 갑은 /home/username)-e 날짜 계정 유효 기간-s 셸 사용자의 로그인 셸 경로-uid 사용자 ID(사용자를 나타내는 번호) 지정-g 그룹에 속하는 그룹 ID 또는 그룹 이름useradd 명령 옵션 설명-c 코멘트 임의의 코멘트를 표시할 수 있으며, 주로 사용자의 이름을 표기하는-d 디렉토리 홈 디렉토리 위치(기본 갑은 /home/username)-e 날짜 계정 유효 기간-s 셸 사용자의 로그인 셸 경로-uid 사용자 ID(사용자를 나타내는 번호) 지정-g 그룹에 속하는 그룹 ID 또는 그룹 이름userdel 명령 옵션 설명-r 홈 디렉터도 삭제-f 삭제 중 발생하는 오류를 무시하고 강제로 삭제root/etc/passwd – 사용자 정보가 비슷한 파일 root/etc/shadow – 지정한 비밀번호가 정장된 파일(암호화되어 있음) 2) 그룹 추가/삭제# groupadd [-ggid] 그룹명 그룹번호를 지정하고 그룹추가#groupdel 그룹명 그룹삭제# groupadd [-ggid] 그룹명 그룹번호를 지정하고 그룹추가#groupdel 그룹명 그룹삭제생성된 그룹을 확인하는 $ cd / $ cdetc$ cat group3) 비밀번호 설정 및 변경$ passwd [계정] 계정 암호 설정 $passwd-d [계정] 계정 암호 삭제 $passwd-l [계정] 계정 암호 잠금 (로그인 잠금) $passwd-u [계정] 계정 암호 잠금 해제 $passwd-n [계정] 사용자가 암호를 변경할 수 없는 Minday 설정 $passwd-x [계정] 사용자가 암호 변경 없이 사용할 수 있는 Maxday 설정4) 환경설정파일root/etc/passwd파일,root/etc/shadow파일에서 새로 생성된 사용자,그룹확인$ cat/etc/passwd 사용자가 본적인 정보 파일 $cat/etc/shadow 비밀번호가 저장된 파일$ cat/etc/passwd 사용자가 본적인 정보 파일 $cat/etc/shadow 비밀번호가 저장된 파일$ cd / 루트 디렉토리 $cd~홈 디렉토리 $pwd 현재 작업 디렉토리의 절대 경로 이름 출력$ cd / 루트 디렉토리 $cd~홈 디렉토리 $pwd 현재 작업 디렉토리의 절대 경로 이름 출력$ cd / 루트 디렉토리 $cd~홈 디렉토리 $pwd 현재 작업 디렉토리의 절대 경로 이름 출력