Warum steht nur ein Verweis vom TSS im GDT?



  • Ja, ich kann mir vorstellen, warum der TSS im GDT und nicht im LDT steht. Es wird daran liegen, weil das Betriebssystem für MultiTasking verantwortlich ist und nicht ein einzelner Prozess.
    Aber warum hat das GDT nur einen einzigen Verweis auf das TSS? Schließlich gibt es ja mehrere Tasks.



  • @oser sagte in Warum steht nur ein Verweis vom TSS im GDT?:

    Aber warum hat das GDT nur einen einzigen Verweis auf das TSS? Schließlich gibt es ja mehrere Tasks.

    https://en.wikipedia.org/wiki/Task_state_segment

    Although a TSS could be created for each task running on the computer, Linux kernel only creates one TSS for each CPU and uses them for all tasks. This approach was selected as it provides easier portability to other architectures (for example, the AMD64 architecture does not support hardware task switches), and improved performance and flexibility. Linux only uses the I/O port permission bitmap and inner stack features of the TSS; the other features are only needed for hardware task switches, which the Linux kernel does not use.

    Soweit ich weiss ist das bei Windows ziemlich ähnlich. TSS für task switching zu verwenden macht IMO einfach keinen Sinn auf portierbaren Kernels. Und auch so, das 16 Bit Limit ist mittlerweile auch schon etwas doof. Weil 64k Threads ist lange nicht mehr undenkbar, das geht sich mittlerweile auf vielen Maschinen gut aus.


Log in to reply