Curso Libre de Linux

Duración
Del 10 Al 26 de junio 2009 (3 semanas)
Horario:
De 10a.m. a 12 p.m.
Dias: Miércoles y viernes
Costo: Q.500.00
Salon: Laboratorio 215

MAS INFORMACION AQUI

Curso Libre de XNA

Duración
Del 10 Al 26 de junio 2009 (3 semanas)
Horario:
De 2 p.m. a 4 p.m.
Dias: Martes y jueves
Costo: Q.500.00
Salon: Laboratorio 215

MAS INFORMACION AQUI

Frases

Si deseas empezar y desarrollar algo grandioso, no necesitas millones de dólares de capitalización. Necesitas suficiente pizza y Diet Coke en la nevera, una PC barata y trabajo y dedicación para realizar tu idea.
John Carmack

FASE 2.3 SystemCalls Exec, Join, Exit
in

(30%, 125 lines) Implement the system calls (exec, join, and exit, also documented in syscall.h).

 

  • Again, all the addresses passed in registers to exec and join are virtual addresses. You should use readVirtualMemory and readVirtualMemoryString to transfer memory between the kernel and the user process.

     

  • Again, you must bullet-proof these syscalls.
  • Note that the state of the child process is entirely private to this process. This means that the parent and child do not directly share memory or file descriptors. Note that two processes can of course open the same file; for example, all processes should have file descriptors 0 and 1 mapped to the system console, as described above.

     

  • Unlike KThread.join(), only a process's parent can join to it. For instance, if A executes B and B executes C, A is not allowed to join to C, but B is allowed to join to C.

     

  • join takes a process ID as an argument, used to uniquely identify the child process which the parent wishes to join with. The process ID should be a globally unique positive integer, assigned to each process when it is created. (Although for this project the only use of the process ID is in join, for later project phases it is important that the process ID is unique across all running processes in the system.) The easiest way of accomplishing this is to maintain a static counter which indicates the next process ID to assign. Since the process ID is an int, then it may be possible for this value to overflow if there are many processes in the system. For this project you are not expected to deal with this case; that is, assume that the process ID counter will not overflow.

     

  • When a process calls exit(), its thread should be terminated immediately, and the process should clean up any state associated with it (i.e. free up memory, close open files, etc). Perform the same cleanup if a process exits abnormally.
  • The exit status of the exiting process should be transferred to the parent, in case the parent calls the join system call. The exit status of a process that exits abnormally is up to you. For the purposes of join, a child process exits normally if it calls the exit syscall with any status, and abnormally if the kernel kills it (e.g. due to an unhandled exception).

     

  • The last process to call exit() should cause the machine to halt by calling Kernel.kernel.terminate(). (Note that only the root process should be allowed to invoke the halt() system call, but the last exiting process should call Kernel.kernel.terminate() directly.)

Quién está en línea

Actualmente hay 0 usuarios y 0 invitados en línea.

Usuarios nuevos

  • cralph
  • dieguapo
  • alkabedam
  • EshkaOlssen
  • javier