I was looking for the answer of this answer quite long. Thanks the explanation in the comment was really awesome. Thanks.
Please help me correct my understanding.
The padding is done, so that OS has not to perform multiple read operation. (But it's desirable to perform rest of computation for segregating the unwanted read bits)
char ch; // let memory address be 1000, 1001
char ch1; // 1002, 1003
int i; // 1004, 1005, 1006, 1007
struct A a;
char c1 = a.ch; // (1)
char c2 = a.ch1; // (2)
int ii = a.i; // (3)
For perform the the (1), (2) and (3) steps the OS performs three read operations. But does extraction(remove 3 extra bytes) for getting the one byte while it perform the step(1) since it's read 4 bytes and same for step(2) but for step(3) it does single read operation and there was no need to any addition computation in extraction. And may be the extraction is not that much expensive for the OS, that why it's assigned 2-2 bytes for ch and ch1, instead of giving them 4-4 bytes.
Please correct me if my understanding/observation lack somethings.