2014-11-29 3 views
0

운영체제의 세분화는 여러 세그먼트로 나누어 져 있다는 것을 알게되었습니다. (프로그램의 경우 심볼 테이블, 소스 텍스트, 스택을 나타낼 수 있습니다.) 시작 단위 이 값은 MMU (?)가 오프셋 이외에 실수를 가져 오는 데 사용하는 가상 주소입니다.운영체제에서의 프로그래머와 세분화

분할의 뚜렷한 이점은 각 세그먼트가 주소 0에서 시작하기 때문에 여러 프로세스가 단일 세그먼트 (예 : 공유 라이브러리)를 동시에 이용할 수 있다는 것입니다.

그러나 세분화가 프로그래머에게 어떻게 도움이되는지는 알 수 없습니다. 몇 가지 예가 무엇입니까?

감사합니다.

+0

'파이썬'프로그래머와'C++'프로그래머조차도 세분화에 신경 쓰지 않습니다. 그것은 언어 컴파일러와 OS 사이의 어떤 것입니다. 일부 '어셈블리'언어 프로그래머와 OS 커널 개발자는이를 알고 있어야합니다. 세분화는 하드웨어 기능입니다. 귀하의 질문에 숨겨진 "유용성"은 무엇입니까? – xmojmr

+0

솔직히, 나는 잘 모르겠다. 필자가 그것에 대해 읽었을 때, 컴파일러의 단순함을 더하여 나열된 이점 중 하나는 프로그래머가 쉽게 활용할 수 있다는 것이 었습니다 ... 비록 어셈블리를 필요로하는 사람은 누구나 생각할 수는 없었지만 ~에 함수에서 세 번째 로컬 변수의 논리 주소 위치를 알아야합니다. 어쨌든, 도와 줘서 고마워! – aralar

+1

[스택 오버플로 : 세그먼트 레지스터 (오늘) 사용의 이점은 무엇입니까?] (http://stackoverflow.com/questions/26865242/what-is-the-advantage-of-using-segment-registers-today) – xmojmr

답변

1

세그먼트 화는 프로그래머에게 아무런 이점도 제공하지 않습니다. 세분화는 건축 적 한계를 극복하기 위해 개발 된 골목입니다. 16 비트 PDP-11 컴퓨터는 64K 메모리 만 처리 할 수 ​​있습니다. 세분화를 사용하여 프로그래머는 더 많은 메모리에 액세스하기 위해 주소 공간 안팎으로 메모리를 맵핑 할 수있었습니다.

8086 칩은 역행했다. IBM은 68000보다 오히려 PC를 사용하여 컴퓨터 업계를 다시 시작했습니다. 8086은 세그먼트를 사용하여 명령어의 크기를 줄였습니다. 주소에 32 비트를 사용하는 대신 명령어가 세그먼트 레지스터에서 오프셋을 사용할 수 있습니다.

64 비트 모드에서 인텔 프로세서의 세그먼트가 속임수가 마침내 사라집니다.

+0

고마워요! 왜 세그먼트가 가증하다고 생각하십니까? 멀티 레벨 페이징과 함께 오늘날 64 비트 머신에 존재하지 않습니까? – aralar

+0

세그먼트는 지나치게 복잡하며 32 비트 및 64 비트 시스템에서는 완전히 필요하지 않습니다. 세그먼트가 페이징을 추가하는 것은 없습니다. 64 비트 인텔에는 세그먼트가 없습니다. – user3344003