New scheduler and interruptible blocking.

A new scheduler replaces the old one.
  - There are no sched_xxx_notify() calls that ask scheduler to change task state.
  - Tasks now have priorities and different timeslices.
  - One second interval is distributed among processes.
  - There are just runnable and expired queues.
  - SCHED_GRANULARITY determines a maximum running boundary for tasks.
  - Scheduler can now detect a safe point and suspend a task.

Interruptible blocking is implemented.
  - Mutexes, waitqueues and ipc are modified to have an interruptible nature.
  - Sleep information is stored on the ktcb. (which waitqueue? etc.)
This commit is contained in:
Bahadir Balban
2008-10-01 12:43:44 +03:00
parent c54d505709
commit f6d0a79298
21 changed files with 681 additions and 429 deletions

View File

@@ -367,7 +367,6 @@ int flush_file_pages(struct vm_file *f)
/* Given a task and fd, syncs all IO on it */
int fsync_common(struct tcb *task, int fd)
{
struct vm_file *f;
int err;
/* Check fd validity */

View File

@@ -29,8 +29,8 @@ int forktest(void)
}
/* Print only when failed, otherwise too many pass messages */
// printf("PID: %d, my global: %d\n", myid, global);
// printf("-- PASSED --\n");
printf("PID: %d, my global: %d\n", myid, global);
printf("-- PASSED --\n");
out:
while(1)
;