ข้ามไปที่เนื้อหา
CYBERSKILLS Academy
ระดับกลาง6 ชม. 41 นาที · 22 ขั้นการเรียน · 4 ด่านบังคับ

ระบบปฏิบัติการ

สิ่งที่ kernel ทำอยู่จริงใต้ทุกโปรแกรมที่คุณรัน

สำหรับผู้เรียนที่ใช้ Linux shell และอ่าน C ได้ Lab บังคับใช้ Linux/WSL เพราะต้องใช้ /proc, strace, taskset, dmesg และ lscpu ผู้เรียนบน macOS ต้องใช้ Linux VM/container สำหรับขั้นตอนเดียวกัน บน Debian/Ubuntu ติดตั้งเครื่องมือเสริมด้วย sudo apt install build-essential make gdb strace util-linux acl libcap2-bin ส่วนคอร์สตั้งต้นให้พร้อมครอบคลุม toolchain ฐาน

ตัวอย่างโครงสร้างคอร์ส

เมื่อจบคอร์ส คุณจะทำอะไรได้บ้าง

  • อธิบายได้ว่า system call มีราคาเท่าไร และตามรอยมันจากโค้ดของคุณลงไปใน kernel แล้วกลับขึ้นมาได้
  • เริ่ม รอ และเก็บกวาดโปรเซสได้ถูกต้อง รวมถึงรูปแบบความผิดพลาดที่ทำให้โปรเซสค้างสะสม
  • เขียนโค้ดหลาย thread ที่แชร์ข้อมูลกันได้อย่างปลอดภัย และมองออกว่าตรงไหนเป็น race condition ก่อนของจะขึ้น production
  • วินิจฉัย deadlock จากเงื่อนไขสี่ข้อของมัน แทนการเดา
  • อ่านแผนที่หน่วยความจำของโปรเซสได้ และอธิบาย page fault, copy-on-write และการ map ไฟล์เข้าหน่วยความจำได้
  • ตัดสินได้ว่าโปรแกรมที่มีสิทธิ์พิเศษปลอดภัยหรือไม่ และทำไมช่องโหว่ระดับเครื่องจำนวนมากถึงอยู่ที่ setuid

ก่อนเริ่มเรียน

แผนการเรียน

ภาษาไทยพร้อมสำหรับทุกขั้นการเรียน.

นี่คือเส้นทางการเรียนทั้งหมด แต่ละบทต่อยอดจากบทก่อนหน้า และด่านบังคับคือจุดที่คุณได้แสดงสิ่งที่ทำได้จริง.

  1. 01

    สองโลก: kernel mode กับ user mode

    บทเรียน · 16 นาที

  2. 02

    โปรแกรมขอให้ kernel ทำอะไรให้ได้อย่างไร

    บทเรียน · 18 นาที

    ต่อยอดจาก: สองโลก: kernel mode กับ user mode

  3. 03

    ตามรอย system call หนึ่งตัวลงไปให้สุด

    ด่านบังคับ · 20 นาที

    ต่อยอดจาก: โปรแกรมขอให้ kernel ทำอะไรให้ได้อย่างไร

  4. 04

    โปรแกรมหนึ่งเริ่มอีกโปรแกรมหนึ่งได้อย่างไร

    บทเรียน · 20 นาที

    ต่อยอดจาก: ตามรอย system call หนึ่งตัวลงไปให้สุด

  5. 05

    zombie, orphan และใครเป็นคนเก็บกวาด

    บทเรียน · 16 นาที

    ต่อยอดจาก: โปรแกรมหนึ่งเริ่มอีกโปรแกรมหนึ่งได้อย่างไร · signal: ระบบปฏิบัติการขัดจังหวะคุณ

  6. 06

    signal: ระบบปฏิบัติการขัดจังหวะคุณ

    บทเรียน · 18 นาที

    ต่อยอดจาก: โปรแกรมหนึ่งเริ่มอีกโปรแกรมหนึ่งได้อย่างไร

  7. 07

    signal handler ทำอะไรได้บ้าง

    บทเรียน · 17 นาที

    ต่อยอดจาก: signal: ระบบปฏิบัติการขัดจังหวะคุณ

  8. 08

    thread กับ process: อะไรที่แชร์กันจริง

    บทเรียน · 16 นาที

    ต่อยอดจาก: โปรแกรมหนึ่งเริ่มอีกโปรแกรมหนึ่งได้อย่างไร

  9. 09

    เขียนโปรแกรมที่มีหลาย thread

    บทเรียน · 18 นาที

    ต่อยอดจาก: thread กับ process: อะไรที่แชร์กันจริง

  10. 10

    race condition: เมื่อจังหวะเวลาเป็นตัวตัดสินคำตอบ

    บทเรียน · 19 นาที

    ต่อยอดจาก: เขียนโปรแกรมที่มีหลาย thread

  11. 11

    การกันไม่ให้เข้าพร้อมกัน และราคาที่ต้องจ่าย

    บทเรียน · 18 นาที

    ต่อยอดจาก: race condition: เมื่อจังหวะเวลาเป็นตัวตัดสินคำตอบ

  12. 12

    รอให้ถูกวิธี: semaphore และ condition variable

    บทเรียน · 19 นาที

    ต่อยอดจาก: การกันไม่ให้เข้าพร้อมกัน และราคาที่ต้องจ่าย

  13. 13

    สร้างคิว producer-consumer ที่ข้อมูลไม่พัง

    ด่านบังคับ · 22 นาที

    ต่อยอดจาก: รอให้ถูกวิธี: semaphore และ condition variable

  14. 14

    deadlock: เงื่อนไขสี่ข้อ และการหักข้อใดข้อหนึ่ง

    บทเรียน · 18 นาที

    ต่อยอดจาก: การกันไม่ให้เข้าพร้อมกัน และราคาที่ต้องจ่าย · รอให้ถูกวิธี: semaphore และ condition variable

  15. 15

    ตัวจัดคิวตัดสินอย่างไรว่าใครได้รันต่อ

    บทเรียน · 18 นาที

    ต่อยอดจาก: thread กับ process: อะไรที่แชร์กันจริง

  16. 16

    สิ่งที่โปรเซสมองเห็น: virtual address space

    บทเรียน · 18 นาที

    ต่อยอดจาก: โปรแกรมหนึ่งเริ่มอีกโปรแกรมหนึ่งได้อย่างไร

  17. 17

    จาก virtual ไป physical: page table และ TLB

    บทเรียน · 19 นาที

    ต่อยอดจาก: สิ่งที่โปรเซสมองเห็น: virtual address space

  18. 18

    การโหลดหน้าเมื่อต้องใช้ และ page fault คืออะไรกันแน่

    บทเรียน · 18 นาที

    ต่อยอดจาก: จาก virtual ไป physical: page table และ TLB

  19. 19

    copy-on-write และการ map ไฟล์เข้าหน่วยความจำ

    ด่านบังคับ · 21 นาที

    ต่อยอดจาก: การโหลดหน้าเมื่อต้องใช้ และ page fault คืออะไรกันแน่

  20. 20

    ระดับสิทธิ์ที่ฮาร์ดแวร์บังคับเอง

    บทเรียน · 15 นาที

    ต่อยอดจาก: สองโลก: kernel mode กับ user mode

  21. 21

    สองวิธีตอบคำถามว่า 'อันนี้ทำได้ไหม'

    บทเรียน · 17 นาที

    ต่อยอดจาก: ระดับสิทธิ์ที่ฮาร์ดแวร์บังคับเอง

  22. 22

    setuid: บิตที่อันตรายที่สุดบนระบบไฟล์

    ด่านบังคับ · 20 นาที

    ต่อยอดจาก: สองวิธีตอบคำถามว่า 'อันนี้ทำได้ไหม'

เริ่มเรียนด้วยบัญชี CYBERSKILLS เมื่อเปิดให้ใช้งาน

บัญชี CYBERSKILLS จะเก็บความก้าวหน้าและผลจากด่านบังคับไว้ด้วยกัน ระหว่างนี้ คุณใช้แผนการเรียนนี้เลือกเส้นทางที่ตรงกับเป้าหมายได้.

ดูตัวอย่างคอร์สทั้งหมด
ระบบปฏิบัติการ · CYBERSKILLS Academy