이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:








작성자: WhiteHT
편집자: 엔시스(sis@sis.pe.kr)



안녕하세요^^

이번 시간은 지난 주 OS의 소개에 이어서 OS의 구조(Structure)에 대해서 알아보는 시간을 갖도록 하겠습니다.

 

지난 주에도 언급했듯이 OS의 서비스에는 User Interface를 지원하고, 프로그램 실행, 입출력 수행, 파일시스템 조작, Communications(공유 메모리, 메세지 전달), 오류 검출이 있다고 했었지요? 이러한 서비스들은 프로그래머의 편의성을 위해 제공되는 서비스라고 볼 수도 있겠습니다. 또 다른 부분도 존재하겠지요? 유저의 편의를 봐줬다면 시스템의 효율적 운영을 위해서 서비스를 해줘야겠지요? 거기에 해당되는 것이 자원할당(Resource allocation), 회계(Accounting-리소스), 보호와 보안이 되겠지요. 여기서 우리는 한가지 의문이 생길 수 있습니다. 저런 OS의 서비스를 이용하려면 뭔가가 중간에서 좀 도와줬으면 싶을텐데 말이죠.

 

바로 그 사이에서 거쳐야하는 것이 System Calls 이라는 것입니다.

어쩌면 참말 중요한 부분이 이 System Calls 이 아닌가 싶습니다 System Calls에 대해서 조금 더 자세히 알아보겠습니다

 

1. System Calls

  - Process OS간의 Interface를 제공

  - 일반적인 고급프로그래밍 언어(C, C++, Java)는 사용자가 직접 System Calls을 할 수 있음

   (API 형태로 제공, 내부 복잡한 과정은 사용자에게 공개하지 않음)

  - System Calls을 할 때, OS에 파일 이름과 같은 추가 정보를 전달.


 

여기서 잠깐, System Calls을 바로 사용하지 않고 API 형태를 사용할까요?

그 이유에는 보안에 관련된 사항도 있지만, User Level에 더 가깝기 때문에 그렇다고 합니다.



                                         <System Calls의 원형>                                         

 


<Win32 API 형태>



어떻나요?? 누가 봐도 프로그래머라면 API 형태를 가져다가 쓰겠죠??^^



 

<API - System Calls 형태>

위와 같이 API형태로 System Calls 하는 형태를 도식화 한것입니다. 커널모드에 넘어가니 복잡한 언어들로 바뀌어서 해석을 하지요? 그 과정을 거쳐서 리턴값을 유저에서 반환해 주는 것이지요. OS는 우리의 머리털 빠지는 것을 보호해 주고 있는 것 입니다^^;


 

그렇다면 System calls의 파라미터는 어떤 방식을 거쳐서 전달이 될까요? 다음과 같습니다


2. System calls Parameter 전달 방법

  - 레지스터를 통한 직접 전달

  - 메모리에 Block 형태로 저장(시작주소와 그 크기를 레지스터에 담아 전달)

  - Stack 구조를 이용


 

레지스터에 넣어 전달하는 것이 심플하긴 하지만 파라미터가 길어질 경우 문제가 될 수 있습니다. 반면, Block 형태와 Stack 구조를 활용한 것은 이에 대한 제한이 없습니다. 이러한 형태로 System Calls은 파라미터를 전달하는 것입니다.

 

그럼 System Calls의 종류는 어떤것들이 있을까요?

3. System Calls의 종류

  - 프로레스 제어

  - 파일 관리

  - 장치 관리

  - 정보 유지

  - 통신(Communications)

  - 보호(Protection)


 

<주요 윈도우와 리눅스의 System Calls>

 

위와 같은 System Calls의 종류가 존재합니다. 위에 것들 외에도 상당히 많겠지요??^^ 주요한 것들만 간단하게 나와있어서 그림을 포함시켜 놓았습니다. 참고 하세요^^

 

위에서 System Calls의 종류에 대한 세부 내용들에 대해서 간단하게 살펴 보겠습니다


프로세스 제어에는 프로세스의 정상 종료와 비정상 종료, 프로세스의 적재와 수행, 프로세스의 생성과 종료, 프로세스의 속성, 시간 대기, 메모리 할당과 해제 등의 기능을 갖고 있다는 말입니다.


파일관리에는 쉽게 파일의 생성과 삭제, 파일 열기와 닫기, 읽기, 쓰기, 재배치 등의 기능이 될 것입니다.

그러면 장치 관리는 어떨까요? 장치 사용에 대한 요청, 해제, 장치에 대한 읽기, 쓰기, 재배치, 장치 속성에 대한 내용, 장치의 추가, 제거 등에 대한 내용이 포함되겠지요?


정보 유지보수는 시간과 날짜, 시스템에 대한 정보 획득과 설정, 프로레스, 파일, 장치 속성에 대한 설정이 있습니다. 시스템에 대한 전반적인 정보를 유지하고 보수 하는것이지요

통신에는 특정 메시지를 전달하거나 공유 메모리 방식을 사용하여 중간 매개체 역할을 해준다는 것이지요. 데이터 전송과 시신, 상태 정보를 전달과 같은 역할을 수행합니다. 여기서 통신은 PC통신 이런 것을 의미하는 것인 아닙니다^^;

 

후아, 이번 포스팅에서는 System Calls에 대해서 알아 보았습니다.


뭐 간단하게만 생각해 본다면, 우리는 이 System Call을 활용해서 컴퓨터랑 커뮤니케이션을 하는 것이지요. 우리가 아무리 떠들어봐야 컴퓨터가 그것을 알아듣지는 못하니까 말이지요??^^


본체랑 모니터 쳐다보고 암만 인터넷 켜져라 켜져라 한다고 켜지지 않는것이지요^^;;

그 사이에서 OS가 중요한 역할을 해주는 것이고 User 단과 Kernel 단 간의 차이를 극복해 주기위해서 System Call을 사용하여 그들에게 명령을 내려주는 것이고요^^

 

그럼 System Calls에 대해서 정리 잘 해보시구요^^

부족한 부분이 있다면 언제든지 태클을~^^;

 

다음 포스팅에서는 Process에 대해서 알아보는 시간을 갖어보겠습니다^^

 

그럼 환절기 건강 유의하세요^^/


****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 비회원

댓글을 달아 주세요

  1. 심규남 2009.04.07 11:14  댓글주소  수정/삭제  댓글쓰기

    이해하기 쉽고 편하게 써주셔서 감사합니다.ㅎㅎ 계속 기대하겠습니다..^^*

  2. Sun2Day 2009.04.11 04:42  댓글주소  수정/삭제  댓글쓰기

    WhiteHT님 덕에 많이 배워갑니다 ^^

  3. Favicon of https://eva1717.tistory.com BlogIcon eva1717 2009.04.14 20:48 신고  댓글주소  수정/삭제  댓글쓰기

    WhiteHT님 역시 세부적으로 파서 포스팅을 해주시네요...^^
    저 같은 경우 System Call API만 갖다 쓰고, 세부적인 내부 동작은 모르겠다 하고 있었는데..
    덕분에 좀 더 플러스가 되는 것 같아요...^^
    WhiteHT님의 내공전수가 많은 도움이 되네요..+ㅁ+
    항상 좋은 내용의 포스팅 써주시느냐고 고생이 많습니다..^^
    오늘도 잘 보고 갑니다...^^

  4. K3Y 2009.05.10 23:25  댓글주소  수정/삭제  댓글쓰기

    안그래도 요즘 OS에 대해 공부하고 있었는데 많은 도움이 되는 자료입니다^^ 감사합니다.