X86 memory segmentation (original) (raw)

About DBpedia

Сегментная защита памяти — один из вариантов реализации защиты памяти в процессорах архитектуры x86. Может применяться в защищенном режиме процессоров начиная с Intel 80286 и совместимых. При использовании плоской модели памяти (англ. flat model, применяется многими современными ОС), каждый сегмент описывает весь объем виртуальной памяти. В такой модели защита памяти реализуется дополнительно страничной памятью.

thumbnail

Property Value
dbo:abstract Los registros del 8086 son de 16 bits, por lo tanto el número de direcciones posibles a direccionar con 1 solo registro es:2 65536 1000016= 10 = 16lo cual representa un total de 64 KiB los valores de direcciones se encuentran en elrango de 0 a FFFF.Para superar este límite se utilizan 2 registros para direccionar memoria: Uno deSEGMENTO y otro de DESPLAZAMIENTO (offset) dentro del segmento. La notaciónutilizada para una dirección segmentada es:SEGMENTO:DESPLAZAMIENTOLa relación entre la dirección de memoria real y la dirección segmentada es:DIR = SEGMENTO * 16 + DESPLAZAMIENTOAl multiplicar por 16 se obtienen 4 bits más con lo que ahora se tiene:2 1048576 10000020= 10 = 16con lo cual tenemos un total de 1024 KiB = 1 MiB de memoria direccionable. Los valores paralas direcciones reales se encuentran en el rango 0 a FFFFFh.Es importante hacer notar que una misma dirección de memoria puede ser direccionadacon distintos valores de segmento y desplazamientoEj💯50 = 105:0 =0:1050, trabajando en base 16. (es) x86 memory segmentation refers to the implementation of memory segmentation in the Intel x86 computer instruction set architecture. Segmentation was introduced on the Intel 8086 in 1978 as a way to allow programs to address more than 64 KB (65,536 bytes) of memory. The Intel 80286 introduced a second version of segmentation in 1982 that added support for virtual memory and memory protection. At this point the original mode was renamed to real mode, and the new version was named protected mode. The x86-64 architecture, introduced in 2003, has largely dropped support for segmentation in 64-bit mode. In both real and protected modes, the system uses 16-bit segment registers to derive the actual memory address. In real mode, the registers CS, DS, SS, and ES point to the currently used program code segment (CS), the current data segment (DS), the current stack segment (SS), and one extra segment determined by the programmer (ES). The Intel 80386, introduced in 1985, adds two additional segment registers, FS and GS, with no specific uses defined by the hardware. The way in which the segment registers are used differs between the two modes. The choice of segment is normally defaulted by the processor according to the function being executed. Instructions are always fetched from the code segment. Any stack push or pop or any data reference referring to the stack uses the stack segment. All other references to data use the data segment. The extra segment is the default destination for string operations (for example MOVS or CMPS). FS and GS have no hardware-assigned uses. The instruction format allows an optional segment prefix byte which can be used to override the default segment for selected instructions if desired. (en) x86 메모리 분할(x86 memory segmentation)은 인텔 x86 명령어 구조를 사용하는 컴퓨터에서 구현된 메모리 분할기법을 말한다. 메모리 분할은 1978년 발표된 인텔 8086에서 도입되어 프로그램이 메모리상의 640 KiB 이상을 사용할 수 있도록 하였다. 1982년 출시된 인텔 80286에서는 개량된 메모리 분할 기법이 도입되어, 가상 메모리와 메모리 보호를 지원할 수 있게 되었고, 이 시점부터 기존 8086에서 사용되던 기본 운영 모드는 리얼 모드로 이름이 바뀌고, 새롭게 보호 모드가 추가되었다. 이후에도 8086 프로세서의 하위 호환을 위해 리얼 모드에서 분할 기능을 제공하다가, 2003년에 발표된 인텔 x86-64 구조부터는 64 비트 모드에서 더이상 분할 기법을 지원하지 않게 되었다. 리얼 모드와 보호 모드 둘다 실제 메모리 주소를 계산하기 위해 16 비트의 를 사용하였다. 리얼 모드에서는 메모리상에 저장된 데이터의 종류에 따라 CS, DS, SS, ES 로 나뉘는데, (CS)는 현재 사용 중인 프로그램의 코드가 저장된 세그먼트의 주소를 가리키고, (DS)는 현재 프로그램이 사용 중인 데이터가 저장된 세그먼트의 주소를 가리키며, (SS)는 현재 프로그램에서 사용 중인 스택이 저장된 세그먼트의 주소를 가리키고, (EXTRA segment) (ES)는 프로그래머에 의해 결정된다. 1985년 발표된 인텔 80386에는 FS 와 GS 라는 사용처가 정해지지 않은 두 개의 세그먼트 레지스터가 추가되었다. 세그먼트 레지스터들은 운영 모드에 따라 사용 방법이 달라진다. 세그먼트의 선택은 일반적으로 실행되는 기능에 따라 프로세서에 의해 결정된다. 예를 들면 명령어들은 코드 세그먼트에서 가져오는데(fetch), 스택에 넣고(push) 빼거나(pop) 스택의 데이터를 참조할때는 스택 세그먼트를 참조한다. 그 외에 모든 데이터에 대한 참조는 데이터 세그먼트를 사용한다. 확장 세그먼트는 문자열과 관련한 동작을 위해 사용된다.(예를 들면 MOVS 나 CMPS) FS 와 GS는 특별히 지정된 용도가 없다. 보통 명령어에 정해진 세그먼트가 기본으로 선택되지만, 사용하기를 원하는 세그먼트가 있을 경우, 명령어 형식에 세그먼트 접두사 바이트를 붙여 사용할 수 있다. (ko) Сегментная защита памяти — один из вариантов реализации защиты памяти в процессорах архитектуры x86. Может применяться в защищенном режиме процессоров начиная с Intel 80286 и совместимых. При использовании плоской модели памяти (англ. flat model, применяется многими современными ОС), каждый сегмент описывает весь объем виртуальной памяти. В такой модели защита памяти реализуется дополнительно страничной памятью. (ru) x86架構中,記憶體區段(英語:Memory Segmentation)是在不改變16位元段選擇子时,使用單个索引暫存器(保存了段内地址偏移值)所能夠定址的的記憶體範圍部份。也指在英特尔x86指令集体系结构下記憶體區段的实现方式。 从8086开始到随后的各款x86架构CPU,无论是实模式还是保护模式,内存寻址时都使用16位段寄存器(segment register)。段寄存器默认使用情况为: * 代码段寄存器CS与寄存器IP相配合获得当前线程代码执行到的内存位置; * 数据段寄存器DS与各通用寄存器配合访问内存中的数据; * 栈段寄存器SS与寄存器(E)SP、(E)BP配合访问线程的调用栈(call stack); * 扩展段寄存器ES用于特定字符串指令(如MOVS或CMPS)。 * 80386引入了2个额外的段寄存器FS与GS,并无特定的硬件用途。 这些段寄存器除了有16位的可见部分,还有不可见的隐藏部分,称为描述符缓存“descriptor cache”或隐藏寄存器“shadow register”。当一个段选择符(segment selector)装入段寄存器的可见部分,处理器同时也把该段描述符的其它数据装入到段寄存器的隐藏部分,这包括段开始的基地址、段长度、访问控制信息等。这些信息缓存到段寄存器中,避免了处理器在转址(translate address)时花费额外的总线周期从段选择符表中读入数据。处理器指令中可以明示使用哪些段寄存器,这将替换掉默认使用的段寄存器。 (zh)
dbo:thumbnail wiki-commons:Special:FilePath/Overlapping_realmode_segments.svg?width=300
dbo:wikiPageExternalLink http://www.intel.com/products/processor/manuals/index.htm http://thestarman.pcministry.com/asm/debug/Segments.html
dbo:wikiPageID 150178 (xsd:integer)
dbo:wikiPageInterLanguageLink dbpedia-de:Segmentierung_(Speicherverwaltung) dbpedia-fr:Segment_(mémoire) dbpedia-ja:セグメント方式
dbo:wikiPageLength 21646 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID 1105877331 (xsd:integer)
dbo:wikiPageWikiLink dbr:Memory_address dbr:Memory_protection dbr:Intel_80286 dbr:Intel_8086 dbr:Real_mode dbr:Protected_mode dbr:Virtual_8086_mode dbr:GNU_Compiler_Collection dbr:Gate_A20 dbr:General_protection_fault dbr:Global_Descriptor_Table dbr:Register_Transfer_Language dbr:Linux_kernel dbr:Local_Descriptor_Table dbr:Call_stack dbr:Stack-based_memory_allocation dbr:Physical_Address_Extension dbr:Win32_Thread_Information_Block dbr:Byte dbr:Address_bus dbr:Address_space dbr:Data_segment dbr:X86_assembly_language dbr:AMD dbc:X86_memory_management dbr:DOS dbr:Flat_memory_model dbr:Paging dbr:Kilobyte dbr:Descriptor_Privilege_Level dbr:Segment_descriptor dbr:Hexadecimal dbr:A20_line dbr:Kernel_mode dbr:THE_multiprogramming_system dbr:Code_segment dbr:IBM_PC/XT dbr:Triple_fault dbr:Buffer_overflow_protection dbr:Global_descriptor_table dbr:IBM_PC dbr:Instruction_set_architecture dbr:Intel dbr:Intel_80386 dbr:Intel_Memory_Model dbr:Microsoft_Windows dbr:X86 dbr:X86-64 dbr:Megabyte dbr:Model-specific_register dbr:Memory_segmentation dbr:Virtual_memory dbr:IA-32 dbr:INT_(x86_instruction) dbr:Thread-local_storage dbr:Privilege_level dbr:High_Memory_Area dbr:Physical_address dbr:Intel_syntax dbr:Split_octal dbr:IBM_PC/AT dbr:Run-time_stack dbr:Thread_(computer_science) dbr:User_mode dbr:Intel_memory_model dbr:Segment_descriptors dbr:File:Overlapping_realmode_segments.svg dbr:File:Protected_mode_segments.svg dbr:X86_string_instructions
dbp:cs1Dates y (en)
dbp:date May 2019 (en)
dbp:wikiPageUsesTemplate dbt:Citation_needed dbt:Refimprove dbt:Refimprove_section dbt:Reflist dbt:Short_description dbt:Use_dmy_dates dbt:Lowercase dbt:Memory_management
dcterms:subject dbc:X86_memory_management
rdfs:comment Сегментная защита памяти — один из вариантов реализации защиты памяти в процессорах архитектуры x86. Может применяться в защищенном режиме процессоров начиная с Intel 80286 и совместимых. При использовании плоской модели памяти (англ. flat model, применяется многими современными ОС), каждый сегмент описывает весь объем виртуальной памяти. В такой модели защита памяти реализуется дополнительно страничной памятью. (ru) Los registros del 8086 son de 16 bits, por lo tanto el número de direcciones posibles a direccionar con 1 solo registro es:2 65536 1000016= 10 = 16lo cual representa un total de 64 KiB los valores de direcciones se encuentran en elrango de 0 a FFFF.Para superar este límite se utilizan 2 registros para direccionar memoria: Uno deSEGMENTO y otro de DESPLAZAMIENTO (offset) dentro del segmento. La notaciónutilizada para una dirección segmentada es:SEGMENTO:DESPLAZAMIENTOLa relación entre la dirección de memoria real y la dirección segmentada es:DIR = SEGMENTO * 16 + DESPLAZAMIENTOAl multiplicar por 16 se obtienen 4 bits más con lo que ahora se tiene:2 1048576 10000020= 10 = 16con lo cual tenemos un total de 1024 KiB = 1 MiB de memoria direccionable. Los valores paralas direcciones reales se en (es) x86 memory segmentation refers to the implementation of memory segmentation in the Intel x86 computer instruction set architecture. Segmentation was introduced on the Intel 8086 in 1978 as a way to allow programs to address more than 64 KB (65,536 bytes) of memory. The Intel 80286 introduced a second version of segmentation in 1982 that added support for virtual memory and memory protection. At this point the original mode was renamed to real mode, and the new version was named protected mode. The x86-64 architecture, introduced in 2003, has largely dropped support for segmentation in 64-bit mode. (en) x86 메모리 분할(x86 memory segmentation)은 인텔 x86 명령어 구조를 사용하는 컴퓨터에서 구현된 메모리 분할기법을 말한다. 메모리 분할은 1978년 발표된 인텔 8086에서 도입되어 프로그램이 메모리상의 640 KiB 이상을 사용할 수 있도록 하였다. 1982년 출시된 인텔 80286에서는 개량된 메모리 분할 기법이 도입되어, 가상 메모리와 메모리 보호를 지원할 수 있게 되었고, 이 시점부터 기존 8086에서 사용되던 기본 운영 모드는 리얼 모드로 이름이 바뀌고, 새롭게 보호 모드가 추가되었다. 이후에도 8086 프로세서의 하위 호환을 위해 리얼 모드에서 분할 기능을 제공하다가, 2003년에 발표된 인텔 x86-64 구조부터는 64 비트 모드에서 더이상 분할 기법을 지원하지 않게 되었다. 리얼 모드와 보호 모드 둘다 실제 메모리 주소를 계산하기 위해 16 비트의 를 사용하였다. 보통 명령어에 정해진 세그먼트가 기본으로 선택되지만, 사용하기를 원하는 세그먼트가 있을 경우, 명령어 형식에 세그먼트 접두사 바이트를 붙여 사용할 수 있다. (ko) x86架構中,記憶體區段(英語:Memory Segmentation)是在不改變16位元段選擇子时,使用單个索引暫存器(保存了段内地址偏移值)所能夠定址的的記憶體範圍部份。也指在英特尔x86指令集体系结构下記憶體區段的实现方式。 从8086开始到随后的各款x86架构CPU,无论是实模式还是保护模式,内存寻址时都使用16位段寄存器(segment register)。段寄存器默认使用情况为: * 代码段寄存器CS与寄存器IP相配合获得当前线程代码执行到的内存位置; * 数据段寄存器DS与各通用寄存器配合访问内存中的数据; * 栈段寄存器SS与寄存器(E)SP、(E)BP配合访问线程的调用栈(call stack); * 扩展段寄存器ES用于特定字符串指令(如MOVS或CMPS)。 * 80386引入了2个额外的段寄存器FS与GS,并无特定的硬件用途。 (zh)
rdfs:label Segmentación de memoria del x86 (es) X86 메모리 분할 (ko) Сегментная защита памяти (ru) X86 memory segmentation (en) X86記憶體區段 (zh)
owl:sameAs freebase:X86 memory segmentation wikidata:X86 memory segmentation dbpedia-es:X86 memory segmentation dbpedia-ko:X86 memory segmentation dbpedia-ru:X86 memory segmentation dbpedia-zh:X86 memory segmentation https://global.dbpedia.org/id/45yQv
prov:wasDerivedFrom wikipedia-en:X86_memory_segmentation?oldid=1105877331&ns=0
foaf:depiction wiki-commons:Special:FilePath/Overlapping_realmode_segments.svg wiki-commons:Special:FilePath/Protected_mode_segments.svg
foaf:isPrimaryTopicOf wikipedia-en:X86_memory_segmentation
is dbo:wikiPageRedirects of dbr:FS/GS dbr:FS_and_GS dbr:Paragraph_(Intel) dbr:Paragraph_(computing) dbr:Segment:offset_(x86) dbr:Segment:offset_addressing_(x86) dbr:Segment:offset_addressing_scheme_(x86) dbr:Segment:offset_memory_addressing_(x86) dbr:Segment:offset_notation_(x86) dbr:Segmented_address dbr:X86_segment:offset dbr:X86_segment:offset_addressing dbr:X86_segment:offset_addressing_scheme dbr:X86_segment:offset_memory_addressing dbr:Segment_registers dbr:Segment_selector dbr:X86_memory_segment
is dbo:wikiPageWikiLink of dbr:Memory_address dbr:Memory_architecture dbr:Memory_management_(operating_systems) dbr:Relocation_(computing) dbr:DOS_memory_management dbr:Intel_8086 dbr:Virtual_8086_mode dbr:16-bit_computing dbr:Orders_of_magnitude_(data) dbr:Relocatable_Object_Module_Format dbr:Global_Descriptor_Table dbr:Google_Native_Client dbr:Conventional_memory dbr:COM_file dbr:Timeline_of_DOS_operating_systems dbr:X86_assembly_language dbr:Exe2bin dbr:Flat_memory_model dbr:Direct_memory_access dbr:Far_pointer dbr:High_memory_area dbr:BIOS_interrupt_call dbr:Booting dbr:Bus_error dbr:FS/GS dbr:FS_and_GS dbr:Netwide_Assembler dbr:OS/2 dbr:RMX_(operating_system) dbr:X86 dbr:X86-64 dbr:System_call dbr:SWAPGS dbr:SWAPGS_(security_vulnerability) dbr:Memory_segmentation dbr:VGA_text_mode dbr:Expanded_memory dbr:Task_state_segment dbr:Paragraph_(Intel) dbr:Paragraph_(computing) dbr:Segment:offset_(x86) dbr:Segment:offset_addressing_(x86) dbr:Segment:offset_addressing_scheme_(x86) dbr:Segment:offset_memory_addressing_(x86) dbr:Segment:offset_notation_(x86) dbr:Segmented_address dbr:X86_segment:offset dbr:X86_segment:offset_addressing dbr:X86_segment:offset_addressing_scheme dbr:X86_segment:offset_memory_addressing dbr:Segment_registers dbr:Segment_selector dbr:X86_memory_segment
is rdfs:seeAlso of dbr:Intel_8086 dbr:A20_line
is foaf:primaryTopic of wikipedia-en:X86_memory_segmentation