The kernel maintains per-process signal data structures to keep track of, signal disposition, blocked signals, and pending signal queues. The process task structure contains appropriate references to these data structures:
struct task_struct {
....
....
....
/* signal handlers */
struct signal_struct *signal;
struct sighand_struct *sighand;
sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
struct sigpending pending;
unsigned long sas_ss_sp;
size_t sas_ss_size;
unsigned sas_ss_flags;
....
....
....
....
};