#include <stdio.h>
#include <stdlib.h>
#define NUM_PARTITIONS 5
#define MAX_SIZE 20
int partitions[ NUM_PARTITIONS] ;
void initPartitions( ) {
for ( int i = 0 ; i < NUM_PARTITIONS; i++ ) {
partitions[ i] = 0 ;
}
}
void loadProcess( int size) {
for ( int i = 0 ; i < NUM_PARTITIONS; i++ ) {
if ( partitions[ i] == 0 ) {
partitions[ i] = size;
printf ( "Process of size %d loaded into partition %d\n " , size
, i
) ; return ;
}
}
printf ( "Failed to load process of size %d (No available partition)\n " , size
) ; }
int main( ) {
initPartitions( ) ;
loadProcess( 5 ) ;
loadProcess( 8 ) ;
loadProcess( 10 ) ;
loadProcess( 2 ) ;
loadProcess( 15 ) ;
loadProcess( 7 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgTlVNX1BBUlRJVElPTlMgNQojZGVmaW5lIE1BWF9TSVpFIDIwCgppbnQgcGFydGl0aW9uc1tOVU1fUEFSVElUSU9OU107Cgp2b2lkIGluaXRQYXJ0aXRpb25zKCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fUEFSVElUSU9OUzsgaSsrKSB7CiAgICAgICAgcGFydGl0aW9uc1tpXSA9IDA7CiAgICB9Cn0KCnZvaWQgbG9hZFByb2Nlc3MoaW50IHNpemUpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX1BBUlRJVElPTlM7IGkrKykgewogICAgICAgIGlmIChwYXJ0aXRpb25zW2ldID09IDApIHsKICAgICAgICAgICAgcGFydGl0aW9uc1tpXSA9IHNpemU7CiAgICAgICAgICAgIHByaW50ZigiUHJvY2VzcyBvZiBzaXplICVkIGxvYWRlZCBpbnRvIHBhcnRpdGlvbiAlZFxuIiwgc2l6ZSwgaSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIkZhaWxlZCB0byBsb2FkIHByb2Nlc3Mgb2Ygc2l6ZSAlZCAoTm8gYXZhaWxhYmxlIHBhcnRpdGlvbilcbiIsIHNpemUpOwp9CgppbnQgbWFpbigpIHsKICAgIGluaXRQYXJ0aXRpb25zKCk7CgogICAgbG9hZFByb2Nlc3MoNSk7CiAgICBsb2FkUHJvY2Vzcyg4KTsKICAgIGxvYWRQcm9jZXNzKDEwKTsKICAgIGxvYWRQcm9jZXNzKDIpOwogICAgbG9hZFByb2Nlc3MoMTUpOwogICAgbG9hZFByb2Nlc3MoNyk7CgogICAgcmV0dXJuIDA7Cn0=