Tôi không thể tìm thấy thông tin này ở bất kỳ đâu. Ở khắp mọi nơi tôi nhìn, tôi thấy mọi thứ liên quan đến cách chồng trông như thế nào khi bạn nhấn "chính" (bất kể điểm vào của bạn là gì), đó sẽ là đối số chương trình và môi trường, nhưng điều tôi đang tìm kiếm là cách thiết lập hệ thống ngăn xếp hợp tác với macro switch_to. Lần đầu tiên tác vụ được chuyển sang, nó sẽ cần phải có EFLAGS, EBP, các thanh ghi mà GCC lưu và địa chỉ trả về từ hàm schedule() trên ngăn xếp được trỏ tới bởi "tsk-> thread-> esp", nhưng những gì tôi không thể tìm ra là làm thế nào hạt nhân thiết lập ngăn xếp này, vì nó cho phép GCC lưu sổ đăng ký mục đích chung (sử dụng các tham số đầu ra cho lắp ráp nội tuyến).Trạng thái ngăn xếp hạt nhân của quá trình Linux khi tạo quy trình là gì?
Tôi chỉ đề cập đến máy tính x86. Tôi đang nghiên cứu hệ thống xử lý/lập kế hoạch Linux cho hạt nhân nhỏ của riêng mình, tôi đang cố gắng viết và tôi không thể tìm được những gì tôi đang thiếu. Tôi biết tôi đang thiếu một cái gì đó kể từ khi thực tế là Slackware đang chạy trên máy tính của tôi là một minh chứng cho thực tế là lịch trình hoạt động: P
EDIT: Tôi dường như đã nói xấu này. Tôi đang tìm kiếm thông tin về cách các nhiệm vụ hạt nhân ngăn xếp được thiết lập không phải cách nhiệm vụ tác vụ người dùng được thiết lập. Cụ thể hơn, ngăn xếp mà tsk-> thread-> esp trỏ tới và "switch_to" chuyển sang.
Dường như bạn có hai câu hỏi riêng biệt ở đây - 1) trạng thái ngăn xếp trên tiến trình init và 2) kernel 'schedule()' trong IRQ. Bạn có lẽ nên đăng một trong những câu hỏi này dưới dạng câu hỏi mới và giữ một trong số các câu hỏi ở đây; theo cách đó bạn sẽ nhận được câu trả lời tập trung vào mỗi câu hỏi. Trên Stack Overflow, bắt đầu một câu hỏi riêng biệt cho mỗi câu hỏi là hoàn toàn tốt đẹp. –
Được rồi, sẽ làm! Tôi đã đọc câu trả lời/câu hỏi ở đây trong một thời gian dài, nhưng không bao giờ được đăng! Cảm ơn bạn đã tip :) Vâng, tôi sẽ trong khoảng 5 phút. Tôi phải đợi: P – Caleb1994