A little about the new concept of the Matrix yu ZET-9 First, just in case, let me remind you that MATRIX = systemDNA + multitasking, i.e. all disk requests from Matrix applications are performed using function calls DNA. This has been the case since about 2006 year. In the latest versions with the old concept, 50% of the processor time allocated for disk operations (SYSTEM process), 25% to the graphics subsystem (which displays text on the screen - XWIND process) and 25% for all processes that do not sleep. This not good - it turns out slowly, and you can see how the screen is updated. The new concept focuses on fast work with graphical functions by abandoning preemptive multitasking (incomplete refusal - see below) in favor of cooperative multitasking (for user processes only).As a result, it will work quickly as follows. XWIND loads a new process to address #C000 (memory page asks SYSTEM, opens and reads the process file through SYSTEM), takes the address of the main window of this process from the title and displays its window onto the screen. Next, XWIND marks in the cell that it is running the process with PID number such and such transfers control to #C000 - type CALL INIT. The process performs initialization and returns management. If the process has not returned control, but has already occurred interrupt, then the interrupt handler calls the BACKGROUND TASK XWIND process, which polls the keyboard/mouse, retypes cursor, then checks and sees that it is not XWIND that is working, but process with PID number. She sets a flag and remembers the PID separately, and at the next interrupt checks the PID, and if sees that the same process is still running, then she copies saved registers of this process into a table and changes the address return to the entry to the XWIND process procedure. Then he rules again XWIND. When you hover your mouse over a window object and click left/middle/right (or just keys on the keyboard) XWINDchecks whether this process is running (i.e. that it was interrupted last time). If yes, then let him work (maximum two frame, after which it will be interrupted again). If the process is not is executed, takes the address of the processing procedure from the window title impact on this particular window object - again indicates cell that the process with PID is running, puts it in the mailbox process this event (click) and does CALL ADR_RUTINE. Process does what is needed and returns (or does not return) control. Immediately after this, XWIND checks the process mailbox and executes the request (if there is one) - for example, download a file. To download a file (and generally perform any disk operations) XWIND places a message in the mailbox of the SYSTEM process. When When the interrupt arrives, the handler checks this and starts switch processes (XWIND/SYSTEM) As a result, each of them now given 50% of CPU time. And before 100% time was given to the XWIND process, and from its time it gave work for the user process. Once the SYSTEM process has completed a disk operation, it no longer is called, and then XWIND works 100% of the time again (inwhich includes the operating time of user processes). XWIND can also set the priority for the SYSTEM process in the form number of frames (0..7), after which they switch to SYSTEM: 0 - 100% SYSTEM works until it loads everything it needs 1 - 50% 3 - 25% 7 - SYSTEM will only work every 8th frame (this is12.5% CPU time) If suddenly the user did not press or move anything, then XWIND gives be executed by interrupted processes, one at a time. And after each They are again tested for impact on the part of the user. Yes impact - take the address and CALL ADR_RUTIN from the window title. No impact - run (restoring registers) the following interrupted process, if any. Well, when you click outside the window of this(active) process he is given a message: “the process has become inactive,” and to him, whose window was clicked - “the process has become active”, we display this other window to the foreground (without brakes and switching to other processes), and everything repeats itself. This is how everything will happen - as a result, frame scroll, and show animation, and quickly print sprites via stack, because in fact (in the absence of disk requests) only ONE XWIND process is running - which can handle two screens use, and 16 color mode. The only thing I don’t know is about digital sound: if you play it, the arrow will not move, or there will be clicks.
Share your thoughts about the article