segmentation기법의 이점

익명 사용자의 이미지

physical memeory 변환 기법에 대해 공부하다가 segmentation에서 좀 이해되지 않는 부분이 있는데요.

제가 이해한 바로는

1) 정적인 크기로 물리 메모리를 할당하다 보니까 internal fragment가 너무 많아지는 문제점을 발견하여 segmentation기법을 생각해내었고

2) 그 기법은 한 프로세스를 위한 가상 주소들을 세그먼트 영역으로 쪼개서 base reg + offset을 더해서 물리주소로 맵핑해주는 것이죠.

결과적으로 보면 각 프로세스 당 사용된 메모리 크기가 달라지는(가변적인 사이즈), 좀 더 최적화된 메모리 할당이 가능해졌습니다.

그런데 좀 더 컴파일 과정을 고려해보면 세그먼트 영역 중 정적으로 결정되는 영역은 코드영역 외에 더 있을까요? 힙 영역은 당연히 정적으로 결정될 수 없는 크기이고 스택 역시, branch사용으로 run time시에 바뀔 수 있습니다.

실행 시에 어차피 memeory transition이 발생하는 거니까 무슨 상관이냐라고 할 수 있겠지만 세그먼트 기법은 각 세그먼트의 베이스 주소가 결정된 채로 맵핑이 되는 것인데, 이때 각 영역 간 충돌이 발생하지 않도록 bound reg를 놓는 것이고요.

정리해서 말하자면 영역 당 bound를 두겠다는 건 사용할지 안할지는 모르겠지만 base ~ bound(size가 아닌 주소인 경우)까지는 같은 프로세스의 다른 세그먼트가 또는 다른 프로세스에서 이 범위를 사용하지 못하게 하는 거 잖아요.

그러면 정말로 세그먼트 기법의 목적과 맞는 구현 방식인 건가요? 제가 보기엔 세그먼트 영역 당 정적 크기로 분리하고 그 영역 내에서 물리 주소로 맵핑해주는 것 같은데..

가변적 크기로 할당해준다라는 말이 정말로 성립될 수 있는 것인지 혼란스럽습니다.

shint의 이미지

찾아보니. 찾으시는 몇몇 단어와 내용이 보이네요. ㅇ_ㅇ;;

제가 30분 정도... 대충 본 바로는. ㅡ_ㅡ;; 그냥. 느낌만 적어봅니다.
- L2 Step인 경우. 가상 주소에 Offset으로 위치를 추가. 로지컬과 물리영역에서 접근 처리.
- 세그먼트는 주소 곁에서. 새도로명 주소영역 알림. 같은 역할을 하는거 같습니다.

Page sizes supported (KB)의 크기가 Boundary 같네요.
Master/section 1MB level1
Fine 1 4 64 Level2
Coarse 4 64 Level2

유투브 동영상 설명이 있네요.
segmentation physical memeory
https://www.google.com/search?biw=1252&bih=804&tbm=vid&ei=ojXwWrLPKsH20ATwq7XYCw&q=segmentation+physical+memeory+&oq=segmentation+physical+memeory+&gs_l=psy-ab.3...24639.25356.0.26184.2.2.0.0.0.0.177.323.0j2.2.0....0...1c.1.64.psy-ab..0.1.144...0.0.Zqe_uns8Jik
https://www.youtube.com/watch?v=RWq5_nH3d1U
https://www.youtube.com/watch?v=E7XQesMS0bg
https://www.youtube.com/watch?v=grNk8i9RrKQ

공개 소프트웨어 강좌
http://olc.kr/main/index.jsp

네이버 책 - segmentation memory
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=segmentation+memory

segmentation memory
https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=segmentation+memory&oquery=segmentation+memeory&tqi=TYs8SspVuERssZ3%2FgNRssssssSd-006848
https://blog.naver.com/seriousboy_/70052180354
http://iamflower.tistory.com/9
https://blog.naver.com/klp0712/220848201156
http://egloos.zum.com/anster/v/2138204
https://blog.naver.com/ending56/220375592477
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10601&docId=65630205&qb=c2VnbWVudGF0aW9uIG1lbW9yeQ==&enc=utf8&section=kin&rank=1&search_sort=0&spq=1

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.