none
C언어 공부하다가 궁금한점이 있습니다 RRS feed

  • 질문

  • C언어 공부하다가 너무 궁금한점이 많은데
    그 중 하나가 운영체제의 크기변환작업에 대한 것입니다

    질문 드리겠습니다

    가정1:  32bit의 운영체제가 c언어 코드를 처리합니다.
    가정2:  32bit인 운영체제이므로 c언어 코드의 데이터들을 전송받기 위해 32bit(=4byte)로 크기를 변환합니다
    가정3:  한편, 처리 할 코드 안에는 여러가지 데이터 타입이 있는데 그 중 직접 함수호출과, 함수포인터를 이용한 간접 함수호출이 있습니다.

    가정4: 모든 포인터 변수들은 4byte의 크기를 가지기 때문에 전송을 위해 굳이 4byte의 변환작업이 필요가 없어 직접 함수호출보다 간접 함수호출이 처리속도에 대해 더 빠릅니다

    질문1: 그렇다면 운영체제가 C언어 코드안에 포함된 함수,배열 등을 처리할 때 무엇을 기준으로 크기를 판단하는 것입니까?
    질문2: 가정이 틀리다면 어떤 이유로 함수 포인터를 이용한 함수호출이 처리속도가 더 빠른 걸까요?


    • 편집됨 plane90 2013년 12월 26일 목요일 오전 7:17
    2013년 12월 26일 목요일 오전 7:17

답변

  • 운영체게가 C언어 코드를 처리하지는 않습니다. C언어로 작성된 프로그램은 C언어용 컴파일러를 이용해서 사용자가

    지정한 시스템에 맞는 기계어로 변환됩니다. 따라서 컴파일시에 지정한 타켓 시스템정보에 따라 그 크기가 정해집니다.

     

    함수의 포인터를 사용하는건 융통성때문이지 속도 때문은 아닙니다. 어디서 속도가 더 빠르다고 했는지는 모르겠지만

    잘못된 이야기라고 보시면 됩니다. 함수의 포인터를 사용해도 기계어로 변환되면 동일한 방식으로 호출되고 스택

    프레임도 모두 일어나기 때문에 속도상의 이점은 없습니다.

    2013년 12월 30일 월요일 오전 6:24
    중재자