Part A.
Given:
$4$ processes whose Burst Time are $6,3,5,x$ respectively.
We have to find the order to execute them so that we could get minimal average Response time.
Solution :-
$Response\ time$ is defined as the time taken from submission of request to the first response by the CPU.
So we can run them in $Round\ Robin$ manner with $Time\ Quantum =1$ unit to get the minimal average response time.
The minimal average response time would be $ \frac {0+1+2+3}{4} = 1.5$ units
But by doing this we are not able to get any specific order of execution for the given set of processes. ($\because$ whatever be the value of $x$ and whatever be the sequence of execution, the average response time will not change.)
So the question asked will not make any sense.
Hence we need to choose an algo so that the order depends on the value of $x$.
The optimal choice among non-premptive algo would be $Shortest\ Job\ First$ since it gives minimal waiting time for all processes , thus also minimizing the average response time.
The criteria for selecting a process to execute in case of shortest job first is $Burst\ time.$
The process with minimal burst time would be executed first.
So for $6,3,5\ and\ x.$
If $x<3<5<6$, then order should be $x,3,5,6$
If $3<5<6<x$, then order is $3,5,6,x.$
If $3<x<5<6$, then order is $3,x,5,6.$
If $5<x<6$, then order is $3,5,x,6$.
Part B.
In a concurrent program the statements written within the $Begin-End$ block would execute sequentially/serially and the statements written within the $ParBegin-ParEnd$ block would execute concurrently/parallely.
Now if we take a look at the diagram then the edge $S_1 \rightarrow S_4$ is redundant as it is already covered using $S_1 \rightarrow S_2 \rightarrow S_4$
So the program would be
Begin
S1
ParBegin
Begin
S2
S4
End
S3
ParEnd
S5
End