พื้นที่ผู้ใช้และพื้นที่เคอร์เนล

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

ระบบปฏิบัติการคอมพิวเตอร์สมัยใหม่มักจะแยกหน่วยความจำเสมือนออกเป็นพื้นที่ผู้ใช้และพื้นที่เคอร์เนล [a] โดยพื้นฐาน แล้ว การแยกนี้ทำหน้าที่ในการป้องกันหน่วยความจำและการป้องกันฮาร์ดแวร์จากพฤติกรรมซอฟต์แวร์ที่เป็นอันตรายหรือทำงานผิดพลาด

พื้นที่เคอร์เนลสงวนไว้อย่างเคร่งครัดสำหรับการเรียกใช้เคอร์เนลระบบปฏิบัติการ ที่มีสิทธิ์ ส่วนขยายเคอร์เนล และไดรเวอร์อุปกรณ์ ส่วน ใหญ่ ในทางตรงกันข้าม พื้นที่ผู้ใช้คือพื้นที่หน่วยความจำที่แอพพลิเคชั่นซอฟต์แวร์และไดรเวอร์บางตัวทำงาน

ภาพรวม

คำว่าuserland (หรือพื้นที่ผู้ใช้) หมายถึงรหัสทั้งหมดที่ทำงานนอกเคอร์เนลของระบบปฏิบัติการ [1] Userland มักจะหมายถึงโปรแกรมและไลบรารี ต่าง ๆ ที่ระบบปฏิบัติการใช้เพื่อโต้ตอบกับเคอร์เนล: ซอฟต์แวร์ที่ทำอินพุต/เอาต์พุตจัดการวัตถุระบบไฟล์ซอฟต์แวร์แอปพลิเคชันฯลฯ

โดยปกติแต่ละ กระบวนการ ของ พื้นที่ผู้ใช้จะทำงานใน พื้นที่ หน่วยความจำเสมือน ของตัวเอง และไม่สามารถเข้าถึงหน่วยความจำของกระบวนการอื่นได้ เว้นแต่จะได้รับอนุญาตอย่างชัดเจน ซึ่งเป็นพื้นฐานสำหรับการป้องกันหน่วยความจำในระบบปฏิบัติการกระแสหลักในปัจจุบัน และเป็นพื้นฐานสำหรับการแยกสิทธิ์ โหมดผู้ใช้แยกต่างหากยังสามารถใช้เพื่อสร้างเครื่องเสมือนที่มีประสิทธิภาพ – โปรดดู ข้อกำหนดการจำลองเสมือน ของPopek และ Goldberg ด้วยสิทธิ์ที่เพียงพอ โปรเซสสามารถร้องขอเคอร์เนลเพื่อแมปส่วนหนึ่งของพื้นที่หน่วยความจำของโปรเซสอื่นกับของมันเอง เช่นเดียวกับกรณีของดีบักเกอร์ โปรแกรมยังสามารถขอหน่วยความจำ ที่ใช้ร่วมกันได้ภูมิภาคที่มีกระบวนการอื่นๆ แม้ว่าจะมีเทคนิคอื่นๆ เพื่ออนุญาตให้ มีการสื่อสาร ระหว่าง กระบวนการ

เลเยอร์ต่างๆ ภายใน Linux แสดงการแยกระหว่างuserlandและkernel space
โหมดผู้ใช้ แอปพลิเคชันผู้ใช้ bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
ส่วนประกอบของระบบ init daemon :
OpenRC , runit , systemd ...
ภูตระบบ :
polkitd , smbd , sshd , udevd ...
ตัวจัดการหน้าต่าง :
X11 , Wayland , SurfaceFlinger (Android)
กราฟิก :
Mesa , AMD Catalyst , ...
ไลบรารีอื่นๆ:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
ห้องสมุดมาตรฐาน C fopen, execv, malloc, memcpy, localtime, pthread_create... (มากถึง 2000 รูทีนย่อย )
glibcตั้งเป้าให้เร็วmusl ตั้งเป้าให้มีน้ำหนักเบาuClibcกำหนด เป้าหมายระบบฝังตัวไบโอนิคถูกเขียนขึ้นสำหรับAndroidฯลฯ ทั้งหมดมีเป้าหมายที่จะรองรับ POSIX / SUS
โหมดเคอร์เนล เคอร์เนลลินุกซ์ stat, splice, dup, read, open, , ioctl, write, mmap, close, exit, ฯลฯ (ประมาณ 380 การเรียกระบบ)
Linux kernel System Call Interface (SCI) มีเป้าหมายที่จะรองรับ POSIX / SUS [ 2]

ระบบย่อย การจัดกำหนดการกระบวนการ

ระบบย่อย IPC

ระบบย่อย การจัดการหน่วยความจำ

ระบบย่อย ไฟล์เสมือน

ระบบย่อย เครือข่าย
ส่วนประกอบอื่นๆ: ALSA , DRI , evdev , klibc , LVM , อุปกรณ์ทำแผนที่ , Linux Network Scheduler , Netfilter
Linux Security Modules : SELinux , TOMOYO , AppArmor , Smack
ฮาร์ดแวร์ ( CPU , หน่วยความจำหลัก , อุปกรณ์จัดเก็บข้อมูลฯลฯ)

การนำไปใช้

วิธีทั่วไปในการใช้โหมดผู้ใช้แยกจากโหมดเคอร์เนลเกี่ยวข้องกับวงแหวนป้องกัน ระบบ ปฏิบัติการ ในทางกลับกัน วงแหวนป้องกันถูกใช้งานโดยใช้โหมด CPU โดยทั่วไป โปรแกรมพื้นที่เคอร์เนลทำงานในโหมดเคอร์เนลเรียกอีกอย่างว่าโหมดผู้ดูแล แอปพลิเคชันปกติในพื้นที่ผู้ใช้ทำงานในโหมดผู้ใช้

ระบบปฏิบัติการจำนวนมากเป็นระบบปฏิบัติการพื้นที่ที่อยู่เดียว — พวกมันมีพื้นที่ที่อยู่เดียวสำหรับรหัสโหมดผู้ใช้ทั้งหมด (โค้ดโหมดเคอร์เนลอาจอยู่ในพื้นที่ที่อยู่เดียวกัน หรืออาจอยู่ในพื้นที่ที่อยู่ที่สอง) ระบบปฏิบัติการอื่นๆ จำนวนมากมีพื้นที่ที่อยู่ต่อการประมวลผล พื้นที่ที่อยู่แยกต่างหากสำหรับแต่ละกระบวนการในโหมดผู้ใช้

แนวทางอื่นที่ใช้ในระบบปฏิบัติการทดลองคือการมีพื้นที่ที่อยู่ เดียว สำหรับซอฟต์แวร์ทั้งหมด และอาศัยความหมายของภาษาโปรแกรมเพื่อให้แน่ใจว่าไม่สามารถเข้าถึงหน่วยความจำตามอำเภอใจได้ แอปพลิเคชันไม่สามารถรับการอ้างอิงถึงวัตถุที่ไม่ได้รับอนุญาตให้เข้าถึงได้ เข้าถึง. [3] [4]แนวทางนี้ถูกนำมาใช้ในJXOS , Unununium ตลอดจนโครงการวิจัย ภาวะ เอกฐาน ของ Microsoft

ดูเพิ่มเติม

หมายเหตุ

  1. ^ ระบบปฏิบัติการรุ่นเก่า เช่น DOSและ Windows 3.1xห้ามใช้สถาปัตยกรรมนี้

อ้างอิง

  1. ^ "ยูสเซอร์แลนด์, n." ไฟล์ศัพท์แสง . อีริค เอส. เรย์มอนด์. สืบค้นเมื่อ2016-08-14 .
  2. ^ "คู่มือผู้ดูแลระบบ README" . git.kernel.org .
  3. ^ "แนะนำระบบ Unununium" . เก็บถาวรจากต้นฉบับเมื่อ 2001-12-15 . สืบค้นเมื่อ2016-08-14 .
  4. ^ "uuu/docs/system_introduction/uuu_intro.tex" . คู่มือแนะนำระบบ UUU 2001-06-01 . สืบค้นเมื่อ2016-08-14 .

ลิงค์ภายนอก