시스템 프로그래밍[4-5]

Turtle·2024년 4월 7일
0
post-thumbnail

❓커널

프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
하드웨어를 운영 관리하며 다음과 같은 서비스를 제공

  • 파일 관리
  • 프로세스 관리
  • 메모리 관리
  • 통신 관리
  • 주변장치 관리

❓인터페이스

커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할
그래픽을 사용한 인터페이스를 GUI, 명령어를 사용한 인터페이스를 CLI라고 한다.
운영체제는 커널과 인터페이스를 분리하여 같은 커널이라도 다른 인터페이스를 가진 형태로 제작할 수 있다.
같은 커널이지만 다른 인터페이스가 장착된다면 사용자는 다른 운영체제로 본다.

❓시스템 호출

커널이 자기 자신을 보호하기 위해 만든 인터페이스
커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.

❓직접 접근 vs 시스템 호출을 통한 접근의 차이

직접 접근

두 응용 프로그램이 자기 마음에 드는 위치에 데이터를 저장하려고 함
다른 사람의 데이터를 지울 수도 있고 내 데이터가 다른 사람에 의해 지워질 수도 있음

시스템 호출을 통한 접근

응용 프로그램이 직접 하드디스크에 데이터를 저장하지 않고 커널이 제공하는 write() 함수를 사용하여 데이터를 저장해달라고 요청
커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지기 때문에 컴퓨터 자원 관리가 수월

시스템 호출은 커널이 제공하는 시스템 자원의 사용과 연관된 함수
응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려 할 때는 시스템 호출을 사용해야 함
운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로 커널에 들어오지 못하게 막음으로써(직접 접근 방지) 컴퓨터 자원을 보호
시스템 호출은 커널이 제공하는 서비스를 이용하기 위한 인터페이스이며 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단

❓디바이스 드라이버

커널과 하드웨어 사이의 인터페이스를 담당하며 드라이버(=디바이스 드라이버)라고 불림
마우스와 같이 간단한 제품은 드라이버를 커널이 가지고 있으나 그래픽 카드와 같은 복잡한 하드웨어의 경우 제작자가 드라이버를 제공함

❓open()

파일을 사용하기 위해 파일을 열어야 하는데 이 때 사용하는 시스템 호출이 바로 open()이다.

❓creat()

path가 나타내는 파일을 생성하고 쓰기 전용으로 연다.

❓close()

파일을 열어서 다 사용했다면 손실을 방지하기 위해 파일을 닫아야 하는데 이 때 사용하는 시스템 호출이 바로 close()이다.

❓read()

파일 디스크립터가 나타내는 파일에서 특정 바이트만큼의 데이터를 읽고 읽은 데이터를 버퍼에 저장한다.

❓write()

read()를 통해 버퍼에 저장된 데이터를 파일 디스크립터가 나타낸 파일에 쓴다.

❓lseek()

지정된 파일의 현재 파일 위치를 원하는 위치로 이동시킨다.

❓8진수로 표현하는 퍼미션(Permission, 권한)

리눅스는 사용자별로 파일 권한을 부여한다. 사용자별로 파일 권한을 부여하면서 무분별한 파일의 접근을 막을 수 있다. 파일 사용자는 파일 소유자(owner), 그룹 소속자(group), 그리고 기타 사용자(others 또는 public)로 구분한다.
파일 권한은 읽기(read), 쓰기(write), 실행(execute)이 있다. 읽기, 쓰기, 실행의 접근 제한 표시는 하이픈(-)으로 표시한다.
사용자별 권한은 기호 모드 또는 8진수 숫자 모드로 표시할 수 있다.

Test.txt의 기호 권한 rw-rw-r--는 숫자 권한으로 664이다. 즉, 파일 소유자와 그룹 사용자들은 Test.txt 파일에 대해 읽고 쓸 수 있지만 실행 권한은 없다. 그 외 기타 사용자들은 Test.txt에 대해서 읽기 기능만 가진다.

※운영체제 전공 과목의 교재로 사용된 아래 전공 서적과 강의, 그리고 산업기사/기사 시험 준비 내용을 기반으로 작성된 것입니다.
참고 : 쉽게 배우는 운영체제(한빛아카데미-IT COOKBOOK)

0개의 댓글