Serena เป็นระบบปฏิบัติการทดลองใช้หลักการออกแบบที่ทันสมัยพร้อมการสนับสนุนสำหรับการพร้อมกันที่แพร่หลายและผู้ใช้หลายคน เคอร์เนลเป็นวัตถุที่มุ่งเน้นและออกแบบมาให้เป็นข้ามแพลตฟอร์มและการพิสูจน์ในอนาคต มันทำงานบนระบบ Amiga โดยติดตั้ง CPU 68030 หรือดีกว่า
แง่มุมหนึ่งที่กำหนดไว้นอกเหนือจาก OSS แบบดั้งเดิมที่ทำจากเกลียวแบบดั้งเดิมคือมันถูกสร้างขึ้นอย่างหมดจดรอบ ๆ คิวการจัดส่งค่อนข้างคล้ายกับการจัดส่งแกรนด์เซ็นทรัลของ Apple ไม่มีการสนับสนุนสำหรับการสร้างเธรดในพื้นที่ผู้ใช้หรือในพื้นที่เคอร์เนล แต่เคอร์เนลใช้แนวคิดโปรเซสเซอร์เสมือนจริงซึ่งมันจัดการพูลของโปรเซสเซอร์เสมือนจริงแบบไดนามิก ขนาดของพูลจะถูกปรับโดยอัตโนมัติตามความต้องการของคิวการจัดส่งและโปรเซสเซอร์เสมือนจะถูกกำหนดให้กับกระบวนการตามต้องการ เคอร์เนลและพื้นที่ผู้ใช้ทั้งหมดพร้อมกันทำได้โดยการสร้างคิวการจัดส่งและโดยการส่งรายการงานเพื่อส่งคิว รายการงานเป็นเพียงการปิด (ฟังก์ชั่นที่มีสถานะที่เกี่ยวข้อง) จากมุมมองของผู้ใช้
อีกแง่มุมที่น่าสนใจคือการจัดการขัดจังหวะ รหัสที่ต้องการตอบสนองต่อการขัดจังหวะสามารถลงทะเบียนสัญญาณการนับได้ด้วยคอนโทรลเลอร์ขัดจังหวะสำหรับการขัดจังหวะที่ต้องการจัดการ คอนโทรลเลอร์ขัดจังหวะจะส่งสัญญาณสัญญาณทุกครั้งที่เกิดการขัดจังหวะ การใช้เซมาฟอร์การนับทำให้มั่นใจได้ว่ารหัสที่สนใจในการขัดจังหวะจะไม่พลาดการเกิดการขัดจังหวะ ข้อได้เปรียบของการแปลการขัดจังหวะเป็นสัญญาณในเซมาฟอร์คือรหัสการจัดการขัดจังหวะดำเนินการในบริบทที่กำหนดไว้อย่างดีซึ่งเป็นบริบทประเภทเดียวกับที่รหัสประเภทอื่น ๆ ทำงานอยู่นอกจากนี้ยังช่วยให้รหัสการจัดการขัดจังหวะมีความยืดหยุ่นมากขึ้น ข้อมูลที่เกิดการขัดจังหวะนั้นไม่เคยหายไปไม่ว่าจะเป็นรหัสตัวจัดการขัดจังหวะเกิดขึ้นว่าจะยุ่งอยู่กับสิ่งอื่น ๆ ในเวลาที่เกิดการขัดจังหวะหรือไม่
เคอร์เนลมักจะกลับมาอีกครั้ง ซึ่งหมายความว่าโปรเซสเซอร์เสมือนจริงยังคงถูกกำหนดเวลาและบริบทเปลี่ยนไปอย่างต่อเนื่องแม้ในขณะที่ CPU กำลังดำเนินการภายในเคอร์เนล นอกจากนี้ยังมีคำชมเต็มรูปแบบของเซมาฟอร์การนับตัวแปรเงื่อนไขและล็อค API นั้นมีอยู่ภายในเคอร์เนล API ของวัตถุเหล่านั้นใกล้เคียงกับสิ่งที่คุณจะพบในการใช้งานพื้นที่ผู้ใช้ของระบบปฏิบัติการแบบดั้งเดิม
เซเรน่าใช้โครงสร้างกระบวนการแบบลำดับชั้นคล้ายกับ Posix กระบวนการอาจวางไข่กระบวนการเด็กจำนวนหนึ่งและอาจผ่านสายคำสั่งและตัวแปรสภาพแวดล้อมให้กับเด็ก ๆ กระบวนการเข้าถึงทรัพยากร I/O ผ่านช่อง I/O ซึ่งคล้ายกับตัวอธิบายไฟล์ใน POSIX
มีความแตกต่างที่โดดเด่นสองประการระหว่างโมเดลกระบวนการ Posix Style และรุ่น Serena แม้ว่า: ครั้งแรกแทนที่จะใช้ Fork () ตามด้วย Exec () เพื่อวางไข่กระบวนการใหม่คุณใช้ฟังก์ชั่นเดียวใน Serena ที่เรียกว่า process_spawn () สิ่งนี้ทำให้การวางไข่กระบวนการเร็วขึ้นและมีข้อผิดพลาดน้อยลงอย่างมาก
ประการที่สองกระบวนการเด็กไม่ได้สืบทอดตัวบ่งชี้ไฟล์ของพาเรนต์โดยค่าเริ่มต้น ข้อยกเว้นเพียงอย่างเดียวคือตัวอธิบายไฟล์ 0, 1 และ 2 ซึ่งแสดงถึงกระแสอินพุตและกระแสเอาต์พุต โมเดลนี้มีข้อผิดพลาดน้อยกว่ามากเมื่อเทียบกับโมเดล POSIX ซึ่งกระบวนการจะต้องระมัดระวังในการปิดตัวอธิบายไฟล์ว่าไม่ต้องการส่งต่อไปยังกระบวนการเด็กก่อนที่จะวางไข่เด็ก การทำเช่นนี้เป็นเรื่องง่ายในยุคแรก ๆ ของ UNIX เมื่อแอปพลิเคชันมีตัวตนค่อนข้างมากและเมื่อไม่มีการสนับสนุนสำหรับห้องสมุดไดนามิก มันตรงกันข้ามในวันนี้เพราะแอปพลิเคชันมีความซับซ้อนมากขึ้นและขึ้นอยู่กับห้องสมุดบุคคลที่สามหลายแห่ง
รูปแบบไฟล์ที่เรียกใช้งานได้ในเวลานี้คือรูปแบบไฟล์ Atari St Gemdos ซึ่งเป็นแบบใกล้เคียงกับรูปแบบการเรียกใช้งาน AOUT รูปแบบไฟล์นี้จะถูกแทนที่ด้วยรูปแบบไฟล์ที่จะสามารถรองรับไลบรารีแบบไดนามิกได้ อย่างไรก็ตามตอนนี้มันดีพอที่จะทำงานให้เสร็จ
เคอร์เนลใช้ serenafs ซึ่งเป็นระบบไฟล์แบบลำดับชั้นที่มีสิทธิ์และข้อมูลผู้ใช้และกลุ่ม ระบบไฟล์อาจติดตั้งอยู่ด้านบนของไดเรกทอรีที่อยู่ในระบบไฟล์อื่นเพื่อขยายเนมสเปซไฟล์ ทั้งหมดนี้ทำงานคล้ายกับวิธีการทำงานในระบบ Posix กระบวนการที่ต้องการวางไข่กระบวนการเด็กสามารถระบุได้ว่ากระบวนการเด็กควรถูก จำกัด อยู่ที่ต้นไม้ย่อยของเนมสเปซระบบไฟล์ทั่วโลก
ปัจจุบันระบบไฟล์บู๊ตใช้งาน RAM ROM มีอิมเมจดิสก์ซึ่งสร้างขึ้นด้วยเครื่องมือ Diskimage และทำหน้าที่เป็นเทมเพลตสำหรับดิสก์ RAM ภาพดิสก์ ROM นี้ถูกคัดลอกไปยัง RAM ในเวลาบูต
พื้นที่ผู้ใช้มีการสนับสนุน LIBC, Libsystem, Libclap และจุดเริ่มต้นของ LIBM Libsystem เป็นไลบรารีที่ใช้ด้านพื้นที่ผู้ใช้ของอินเตอร์เฟสเคอร์เนล LibClap เป็นไลบรารีที่ใช้การแยกการโต้เถียงสำหรับโปรแกรมอินเทอร์เฟซบรรทัดคำสั่ง
Serena OS มาพร้อมกับเชลล์ซึ่งใช้ภาษาเชลล์ที่กำหนดไว้อย่างเป็นทางการ คุณสามารถค้นหาเอกสารเชลล์ได้ที่นี่
บริการเคอร์เนลต่อไปนี้มีการใช้งานในเวลานี้:
บริการพื้นที่ผู้ใช้ต่อไปนี้มีอยู่ในขณะนี้:
โปรแกรมอวกาศผู้ใช้ต่อไปนี้มีอยู่ในขณะนี้:
ระดับความสมบูรณ์และความถูกต้องของโมดูลต่าง ๆ แตกต่างกันไปเล็กน้อยในเวลานี้ สิ่งต่างๆมีการวางแผนโดยทั่วไปเพื่อปรับปรุงเมื่อเวลาผ่านไป :)
รองรับฮาร์ดแวร์ต่อไปนี้ในเวลานี้:
การตั้งค่าโครงการเพื่อการพัฒนาและการดำเนินการระบบปฏิบัติการนั้นเกี่ยวข้องกับการเล็กน้อย คำแนะนำด้านล่างนี้มีไว้สำหรับ Windows แต่พวกเขาควรทำงานเหมือนกันบน Linux และ MacOS
สิ่งแรกที่คุณจะต้องใช้คือตัวจำลองคอมพิวเตอร์ Amiga ฉันใช้ winuae ซึ่งคุณสามารถดาวน์โหลดได้จาก https://www.winuae.net/download
ดาวน์โหลดตัวติดตั้ง Winuae และเรียกใช้ สิ่งนี้จะวางตัวจำลองภายในไดเรกทอรี 'ไฟล์โปรแกรม' บนไดรฟ์บูตของคุณ
ดาวน์โหลดและติดตั้งคอมไพเลอร์ VBCC และแอสเซมเบลอร์ที่จำเป็นในการสร้างระบบปฏิบัติการ คุณสามารถค้นหาหน้าแรกของโครงการได้ที่ http://www.compilers.de/vbcc.html และหน้าดาวน์โหลดสำหรับเครื่องมือที่ http://sun.hasenbraten.de/vbcc
เวอร์ชันที่ฉันใช้สำหรับการพัฒนาของฉันและฉันรู้ว่าทำงานได้อย่างถูกต้องบน Windows 11 คือ 0.9H ตรวจสอบให้แน่ใจว่าได้เพิ่มตัวแปรสภาพแวดล้อมด้วยชื่อ VBCC ซึ่งชี้ไปที่โฟลเดอร์ VBCC บนดิสก์ของคุณและเพิ่มโฟลเดอร์ vbccbin ลงในตัวแปรสภาพแวดล้อม PATH
โปรดทราบว่าคุณต้องติดตั้ง Microsoft Visual Studio และเครื่องมือบรรทัดคำสั่งเนื่องจากจำเป็นต้องใช้คอมไพเลอร์ Microsoft C เพื่อสร้างเครื่องมือสร้างบน Windows
ในที่สุดการติดตั้ง GNU Make สำหรับ Windows และตรวจสอบให้แน่ใจว่าอยู่ในตัวแปรสภาพแวดล้อม PATH วิธีที่ตรงไปตรงมาในการทำเช่นนี้คือการดำเนินการคำสั่ง Winget ต่อไปนี้ในหน้าต่างเชลล์: winget install GnuWin32.Make
คุณจะต้องดำเนินการขั้นตอนนี้เพียงครั้งเดียวและก่อนที่คุณจะพยายามสร้างระบบปฏิบัติการ จุดประสงค์ของขั้นตอนนี้คือการสร้างเครื่องมือสองสามอย่างที่จำเป็นในการสร้างเคอร์เนลและไลบรารีอวกาศผู้ใช้ คุณสามารถค้นหาเอกสารสำหรับเครื่องมือเหล่านี้ได้ที่นี่
ก่อนอื่นเปิดพรอมต์คำสั่งนักพัฒนาในเทอร์มินัล Windows จากนั้นซีดีลงในโฟลเดอร์ Serena/Tools make และตีผลตอบแทน สิ่งนี้จะสร้างเครื่องมือที่จำเป็นทั้งหมดและวางไว้ในโฟลเดอร์ Serena/build/tools เครื่องมือจะถูกเก็บไว้ในตำแหน่งนี้แม้ว่าคุณจะทำความสะอาดโครงการ OS อย่างเต็มที่
เปิดโฟลเดอร์ Serena Project ใน Visual Studio Code และเลือก Build All จากงาน Run Build Task... สิ่งนี้จะสร้างเคอร์เนล, libsystem, libc, libm และเชลล์และสร้างไฟล์ Serena.rom เดียวภายใน Serena/product/Kernel/ โฟลเดอร์ ไฟล์ ROM นี้มีเคอร์เนลไลบรารีอวกาศผู้ใช้และเชลล์
ก่อนอื่นคุณจะต้องสร้างการกำหนดค่า Amiga ด้วย CPU อย่างน้อย 68030 CPU (เช่น Amiga 3000 หรือ 4000) ใน Winuae หากคุณยังไม่ได้ทำ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการเริ่มต้นอย่างรวดเร็วและเลือก A4000 เป็นรุ่น จากนั้นไปที่หน้าฮาร์ดแวร์/ROM และอัปเดตฟิลด์ข้อความ "Main Rom File" ซึ่งชี้ไปที่ไฟล์ Serena.rom ภายใน Serena/build/product/ Folder บนดิสก์ของคุณ ในที่สุดก็ให้ AMIGA เสมือนอย่างน้อย 1MB ของ RAM Fast RAM โดยไปที่หน้าฮาร์ดแวร์/RAM และตั้งค่ารายการ "ช้า" เป็น 1MB บันทึกการกำหนดค่านี้เพื่อที่คุณจะได้ไม่ต้องสร้างใหม่ในครั้งต่อไปที่คุณต้องการเรียกใช้ระบบปฏิบัติการ
โหลดการกำหนดค่าแล้วกดปุ่มเริ่มต้นหรือคลิกสองครั้งที่การกำหนดค่าในหน้าการกำหนดค่าเพื่อเรียกใช้ระบบปฏิบัติการ อีมูเลเตอร์ควรเปิดหน้าจอที่แสดงข้อความบูตแล้วพรอมต์เชลล์ ดูหน้าเชลล์สำหรับรายการคำสั่งที่สนับสนุนโดยเชลล์
แจกจ่ายภายใต้ใบอนุญาต MIT ดู LICENSE.txt สำหรับข้อมูลเพิ่มเติม
Planitzer Dietmar - @linkedin
ลิงค์โครงการ: https://github.com/dplanitzer/serena