잡다한 정보방

블로그 이미지
by 행복회로 풀가동

TAG CLOUD

  • Total hit
  • Today hit
  • Yesterday hit

리눅스 프로그래밍

 

 

과제명:리눅스 부팅 순서

*부팅:보조기억장치인 하드디스크 또는 플로피 디스크를 사용하여 컴퓨터가 동작할 수 있게 운영체제를 불러 들이는 작업

 

1.PC의 전원버튼을 누른다.

 

2.ROM-BIOS(Basic Input Output System)에 지정된 부팅 드라이브로 부팅 시작

 

3.하드디스크나 플로피,CD-ROM등의 0번 섹터의 부트 프로그램을 읽음

(하드디스크의 0번 섹터를 MBR(Master Boot Record)라고 함)

(부트섹터엔 리눅스를 위한 LILOGRUB등이 있거나,NT,OS/2등 다른 운영체제가 있을 수 있음

4.사용자는 LILO에 실행시키기 원하는 커널의 이미지를 옵션값과 함께 넘겨줌

 

5.LILO는 해당 커널의 이미지를 로딩해서 실행

(기본 설정은 /vminuz 또는 /boot/vminuz 이미지가 메모리에 로드 및 실행)

(vminuz는 리눅스 커널의 압축 이미지)

 

6.swapper라고 불리우는 프로세스 id 0인 프로세스가 실행 됨

(메모리 관리,디스크 관리,프로세스 관리 수행)

 

7.swapper 프로세스는 프로세스 id 1init라는 프로세스를 실행 후 swapper 역할만 수행

 

8.프로세스 id 1init 프로세스는 /etc/inittab 파일을 참조하여 사용자들을 위해

시스템을 설정(pid 0인 프로세스가 초기화한 커널의 바탕에서 나머지 작업 수행)

1)기본적인 PATH 설정

2)/etc/sysconfig/network 파일이 있으면 그 스크립트를 실행

3)키맵의 로딩

4)시스템 폰트의 로딩

5)스왑 영역의 활성화

6)디스크 검사(fsck)

7)/proc 파일 시스템의 마운트

8)루트 파일 시스템을 rw모드로 다시 마운트

9)/etc/HOSTNAME 파일의 설정

10)/etc/mtab파일에 루트와 /proc 파일 시스템의 엔트리 추가

11)커널 모듈 로드

12)시스템 시간 설정

13)서버 데몬 실행

9.init 프로세스가 자신에게 할당된 초기화 과정을 모두 끝마치고 나면 inittab 파일의

맨 끝부분에 명시된 것처럼 mingetty 혹은 getty 프로세스를 실행

1)pid 0의 프로세스에 의해 실행된 initfork()시스템 콜을 수행

2)fork()에 의해 생성된 자신 initexec()시스템 콜을 이용해서 getty 혹은 mingetty등의 프로세스 수행

 

10.getty는 화면에 login:을 띄우고서 사용자의 userid가 입력되기를 기다림

 

11.사용자가 userid를 입력하고 엔터를 치면 getty/bin/login을 실행시키게 됨

 

12./bin/login 프로그램은 password:라는 프롬프트를 띄우고 사용자의 password 입력을

기다림

 

13.사용자가 암호를 입력하면 /etc/passwd 또는 /etc/shadow 파일과 일치하는지 비교

1)만약 일치하지 않으면 login 프로그램은 에러를 내고 종료함

2)init 프로세스는 다시 자신을 folk()하고

3)/sbin/getty 프로그램을 exec()해서 화면에 로그인 프롬프트를 띄어 다시 사용자의 입력을 기다림

 

14.패스워드가 일치하면 login 프로그램은 홈 디렉토리를 바꾸는 등 여러 가지 작업을 하고

최종적으로 exec()를 하여 로그인 쉘을 띄움

 

15.사용자는 자신의 쉘로 작업을 함

1)쉘에서 입력하는 명령어들은 먼저 쉘이 folk()를 해서 자식 프로세스 생성

2)자식 프로세스가 exec()를 해서 실행되고 종료됨

 

 

*folk() 시스템 콜과 exec() 시스템콜의 차이

둘 다 한 프로세스가 다른 프로세스를 실행시키기 위해 사용하는 시스템 호출

 

(1)folk() 시스템 콜

1)새로운 프로세스를 위해 메모리 할당

2)folk()를 호출한 프로세스를 새로운 공간으로 모두 복사

3)원래 프로세스는 원래 프로세스대로 실행되고,folk()를 이용해서 생성된 프로세스도 실행이 됨

 

(2)exec() 시스템 콜

1)exec()를 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어씌움

(folk()처럼 새로운 메모리 공간을 할당하지 않음)

2)exec()를 호출한 프로세스가 아닌 exec()에 의해 호출된 프로세스만 남게 됨

AND

ARTICLE CATEGORY

분류 전체보기 (27)
전력전기전자 (1)
건강정보 (4)
잡다한 지식 (2)
자동차 (5)
IT (3)
리눅스 (1)
네트워크 (3)
프로그래밍 언어 (4)
웹 지식(ver22년도) (3)

RECENT ARTICLE

RECENT COMMENT

CALENDAR

«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

ARCHIVE