Gurus, I am working on a consumer electronics product and creating softwares for that.The product uses ST5516 processor from ST MICRO ELECTRONICS.I was going through the ST5516 Datasheet to understand about the processor architecture. I am quite puzzled at this statement given in the datasheet and not able to realize how this could be possible to be implemented in hardware because this more of an OS concept and in my experience have seen all these stuff stated below done by the OS.But the datasheet states that these things are implemented in hardware processor.Heres what the processor document states:
"Processes and concurrency This section describes the default behavior of the CPU. Note: This behavior can be altered, for example by disabling timeslicing or installing a user scheduler.
A process starts, performs a number of actions, and then either stops without completing or terminates complete. Typically, a process is a sequence of instructions. The CPU can run several processes in parallel (concurrently). Processes may be assigned either high or low priority, and there may be any number of each. The processor has a microcoded scheduler which enables any number of concurrent processes to be executed together, sharing the processor time. This removes the need for a software kernel, although kernels can still be written if desired. At any time, a process may be: active:
- being executed,
- interrupted by a higher priority process,
- on a list waiting to be executed, inactive:
- waiting to input,
- waiting to output,
- waiting until a specified time. The scheduler operates so that inactive processes do not consume any processor time. Each active high priority process executes until it becomes inactive. The scheduler allocates a portion of the processor's time to each active low priority process in turn (see Section 8.4: Priority on page 82). Active processes waiting to be executed are held in two linked lists of process work spaces, one of high priority processes and one of low priority processes. Each list is implemented using two registers, one of which points to the first process in the list, the other to the last.Each process runs until it has completed its action or is descheduled. In order for several processes to operate in parallel, a low priority process is only permitted to execute for a maximum of two timeslice periods."
Now here are few couple of questions which I would like to get clarified:
1)If whats stated above happens can I take I dont need an OS to make sophisticated complex applications like for eg., develop a set box application software or may be a DVD player applications which allows users to access its features?If thats the case,how can I access these process or scheduler inorder to program them according to my product requirements?2)How can a scheduler be implemented in hardware level in the processor?Or in other way to put,how can I realise a scheduler in the processor?
3)The last statement in the description given above(In order for several processes to operate in parallel, a low priority process is only permitted to execute for a maximum of two timeslice periods),how can the scheduler control the process like this?Because at any point of time only one process is going to have high priority.When the high priority task exits,the next task having high priority will be promoted.Taking this fact into consideration,I dont see a way how the low priority process can be assigned two time slices?Does this mean actually we can have combination of priority and roundrobin sort of scheduling algorithm for applications?(I mean ,you have one high priority and a group of tasks having same priority level whose priority value is less then the highest priority tasks priority level).4)Is this what we term as multithreaded processor?
Looking farward for all your replys and advanced thanks for the same, Regards, s=2Esubbarayan